Я пытаюсь использовать привязку в PDO для выбора некоторых записей из базы данных Microsoft SQL.Код, который я использую, выглядит так, как будто я нашел в документации.Однако, когда я запускаю его, я получаю следующее предупреждение:
Предупреждение: PDOStatement :: execute () [pdostatement.execute]: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1087 [Microsoft] [Собственный клиент SQL] [SQL Server] Необходимо объявить табличную переменную «@ P1».(SQLExecute [1087] в ext \ pdo_odbc \ odbc_stmt.c: 254) в (длинный путь к файлу) в строке 40
Вот соответствующий код:
$table = "[User Site]";
$user = "demo";
$sql = "SELECT * FROM ? WHERE user='?'";
$sth = $db->prepare($sql);
$sth->bindValue(1, $table, PDO::PARAM_STR);
$sth->bindValue(2, $user, PDO::PARAM_STR);
$sth->execute(); // <-- line 40
$data = $sth->fetch(PDO::FETCH_ASSOC);
Это можетсвязаны.Когда я пытаюсь использовать маркеры именованных параметров (: table,: user) вместо вопросительных знаков, я получаю следующее:
Предупреждение: PDOStatement :: bindValue () [pdostatement.bindvalue]: SQLSTATE [HY093]: Неверный номер параметра: параметр не был определен в (длинный путь к файлу) в строке 39
Почему ему не нравится мое подготовленное утверждение?