Задать вопрос
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 все окей.
  • Вопрос задан
  • 381 просмотр
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
Вы не можете подменять имена объектов (таблицы, столбцы, функции, процедуры) при помощи подготовленных выражений (prepared statements). Либо вручную собирать запрос, либо пересмотреть архитектуру приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽