@zer1

Почему не срабатывает запрос?

$pdo = new PDO('mysql:host=localhost;dbname=shop', 'root', '', $opt);
$num = '1';
$fields = 'title';
$stm = $pdo->prepare('SELECT ? FROM products WHERE id=?');

$stm->bindValue(1, $fields, PDO::PARAM_STR);
$stm->bindValue(2, $num, PDO::PARAM_INT);
$stm->execute();

$data = $stm->fetchAll();
var_dump($data);

Экспериментирую с PDO. Без вставки полей работает.
Вот что показывает vardump
array (size=1)
  0 => 
    array (size=1)
      'title' => string 'title' (length=5)
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Механизм prepared statements изначально задуман подставлять только данные в запрос. Структуру запроса менять не может.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
$num = '1';
$fields = 'title';

$stm = $pdo->prepare('SELECT * FROM products WHERE id=?');
$stm->execute([$num]);
$data = $stm->fetch();

var_dump($data[$fields]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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