//$where jest zawsze stringiem i nigdy nie jest pusty
$i = $pdo -> prepare("INSERT IGNORE INTO :tabl (id, nick) VALUES (:id, :nick)");
$i -> bindValue(":tabl", $where, PDO::PARAM_STR);
$i -> bindValue(":id", $udata["users"]["id"], PDO::PARAM_INT);
$i -> bindValue(":nick", $udata["users"]["nick"], PDO::PARAM_STR);
$i -> execute();
$i -> closeCursor();Otrzymuję:exception 'PDOException' with message 'SQLSTATE[42000]:
Syntax error or access violation: 1064 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 '? (id, nick' at line 1' in /folder/plik.php:35
Stack trace:
#0 plik.php(35): PDO->prepare('INSERT IGNORE I...')Czyli w skrócie bindValue podmienia mi $where na znak zapytania '?', zapytanie bezpośrednio w PMA wykonuje się bez problemowo.
Wpisanie $where bezpośrednio do zapytania pomijając bindValue rozwiązuje problem ale to nie jest rozwiązanie.
Jakieś sugestie?
Nie ma znaczenia, że nie podałem oryginalnego zapytania (od pierwszego nawiasu w zapytaniu), ani to, że nie podałem całego stack trace, błąd jest w ":tabl" i bindValue.


Dodatki SourceMod















