Создаю подключение, выполняю запрос:
$dsn = "mysql:host=$host; dbname=$db; charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$PDO = new PDO($dsn, $user, $pass, $opt);
$st = $PDO->prepare("SELECT * FROM todolist");
$st->execute();
$res = $st->fetchAll();
#обретаю счастье, возвращается то, что и ожидал (печатаю массив со строками)
Но если я пытаюсь воспользоваться prepare statment
...
$name = 'todolist';
$st = $PDO->prepare("SELECT * FROM :name");
$st->execute([':name'=>$name]);
$res = $st->fetchAll();
вылетает с ошибкой
Uncaught 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 ''todolist'' at line 1' in /var/www/site/index.php:22\nStack trace:\n#0 /var/www/site/index.php(22): PDO->prepare('SELECT * FROM '...')\n#1 {main}\n thrown in /var/www/site/index.php on line 22
я не могу понять, что происходит и куда копать. Вроде как с версией MySql всё в порядке,
Server version: 5.1.73 Source distribution
PHP 5.5.38