Вот такая ошибка
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 '?' at line 1
возникает при попытке подготовить запрос вида
SHOW TABLES LIKE :1
при отключении эмуляции подготавливаемых запросов в коде
$conn = new PDO('mysql:dbname=testdb;host=127.0.0.1;charset=utf8', 'root', 'root', [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$sth = $conn->prepare('SHOW TABLES LIKE :1'); <-- тут ошибка
$sth->execute([':1' => 'test']);
var_dump($sth->fetchAll());
PHP 7.0.4 и 5.6.13
MySQL 5.6.20
Windows 7 :)
Вопрос: Что делать? Это мой локальный глюк или PDO глобально кривой?
UPD С запросом вида
SHOW COLUMNS FROM `test` LIKE ?
аналогичная ситуация.
mysql> prepare stmt1 from 'show tables like ?';
ERROR 1064 (42000): 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 '?' at line 1
Сдаётся мне, что prepared statements в mysql в принципе не могут обрабатывать запросы show tables.
Точно, об этом упомянуто в мануале. В mysql разрешено подготавливать только определённый список выражений, SHOW TABLES
и SHOW COLUMNS
в список поддерживаемых выражений не входят. А эмуляция подготовленных выражений, соответственно, успешно это ограничение скрывает.
Используйте запросы к псевдотаблицам служебной базы INFORMATION_SCHEMA
:
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
WHERE
table_schema = DATABASE() AND
table_name LIKE ?;
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Здравствуйте, у меня есть SQL запрос, который связывает 2 таблицы Нужно сделать ограничение на вывод, то есть если orderspaid = 1 тогда выводим, как...
Не могу разобраться с выводом токена на экран, подскажите, пожалуйста, где ошибка:
Закончил изучать swing и решил попробовать javaFx, буквально с самого начала у меня появилась проблемаКак можно установить layout в JavaFX? (на данный...