//$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.