ďťż
Podstrony
|
telcocafeINSERT INTO reviews (rev_author, rev_email, rev_content) VALUES('Autor komentarza', 'emailautora@autor.com', 'Bardzo fajny komentarz'); Powyższe zapytanie kiedy się je wykona w PhpMyAdmin wykonuje się poprawnie. Zapytanie generowane jest przez metodę insert(). mysql_error(): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Autor komentarza', 'emailautora@autor.com', 'Bardzo fa' at line 1 funkcja php która generuje zapytanie i druga która je wykonuje: function query($query) { if(!$this->result = @mysql_query($query,$this->connection)) { $this->mysql_error = mysql_error(); return false; } else { return true; } } // This method adds new record to database. // usage1: insert($tableName, $arrayKV, '', '') // usage2: insert($tableName, '', $arrayKeys, $arrayValues) function insert($tableName,$arrayKV,$arrayKeys,$arrayValues) { if($arrayKV != '') { $tableValues = ''; $tableFields = ''; $i = 1; foreach($arrayKV as $key => $value) { if($i==count($arrayKV)) { $tableFields .= $key; $tableValues .= addslashes(htmlspecialchars($value, ENT_QUOTES)); } else { $tableFields .= $key.', '; $tableValues .= addslashes(htmlspecialchars($value, ENT_QUOTES)).', '; } $i++; } } else if($arrayKV == '' && $arrayKeys != '' && $arrayValues != '') { $tableValues = ''; $tableFields = ''; $i = 1; foreach($arrayKeys as $key => $value) { if($i==count($arrayKeys)) { $tableFields .= $value; } else { $tableFields .= $value.', '; } $i++; } $i = 1; foreach($arrayValues as $key => $value) { if($i==count($arrayValues)) { $tableValues .= addslashes(htmlspecialchars($value, ENT_QUOTES)); } else { $tableValues .= addslashes(htmlspecialchars($value, ENT_QUOTES)).', '; } $i++; } } if($this->query("INSERT INTO ".$tableName."(".$tableFields.") VALUES(".$tableValues.")")) { return true; } else { return false; } }wywołanie funkcji/metody: $tab1 = array('rev_author', 'rev_email', 'rev_content'); $tab2 = array("'Autor komentarza'", "'emailautora@autor.com'", "'Bardzo fajny komentarz'"); $sql->insert('reviews','',$tab1,$tab2); Proponuje wpisać INSERT INTO $tabela VALUES ('cos1','cos2'); Ale to ma być uniwersalna funkcja na wstawianie rekordów. a przez to przeciez musze wpisac w jakie pola(kolumny) chce wsadzic dane. Spróbuj może zamiast wykonywać zapytanie, wywalić je na ekran, czy przypadkiem skrypt nie robi z nim niczego dziwnego. Jak dostaniesz je w czystej formie, w jakiej próbuje je wykonać skrypt to będzie Ci łatwiej znaleźć winowajcę. Imho tutaj addslashes jest co najmniej dziwnie użyte.. INSERT INTO reviews (rev_author, rev_email, rev_content) VALUES('Autor komentarza', 'emailautora@autor.com', 'Bardzo fajny komentarz'); Właśnie to jest to co wywala skrypt funkcja insert. Wysyła tak skonstruowane zapytanie do serwera bazy danych. Niestety nadal pojawia się ten błąd. Edit> Usunęłem addslashes i nadal nie jest dobrze. Dlaczego włąściwie jest dziwnie użyte ? Użytkownik orglee edytował ten post 09 październik 2006, 13:19 |
|||
Sitedesign by AltusUmbrae. |