Stasgar
@Stasgar
Обученная макака

Почему Php PDO отказывается принимать массив аргументов в execute?

Вот простейший код:
<?php
$db = new PDO("mysql:host=localhost;dbname=test","root","");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM :table";
$table='news';
$arr = array(':table'=>$table);
    
$prep = $db->prepare($sql);
$prep->execute($arr);


Выводит фатальную ошибку:
Fatal error: Uncaught PDOException: 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 ''news'' at line 1 in E:\Desktop\Server\data\htdocs\project001\index.php:9 Stack trace: #0 E:\Desktop\Server\data\htdocs\project001\index.php(9): PDOStatement->execute(Array) #1 {main} thrown in E:\Desktop\Server\data\htdocs\project001\index.php on line 9


То-же самое и с псевдопеременными ? и т.д.
Гуглил, ничего не нашел. С bindParams все окей.
  • Вопрос задан
  • 378 просмотров
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
Вы не можете подменять имена объектов (таблицы, столбцы, функции, процедуры) при помощи подготовленных выражений (prepared statements). Либо вручную собирать запрос, либо пересмотреть архитектуру приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы