ďťż

[PHP+MySQL] Generowane zapytanie INSERT nie działa.

       

Podstrony


telcocafe


INSERT 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
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.