我正在尝试使用 PDO 中的绑定从 Microsoft SQL 数据库中选择一些条目。我使用的代码看起来与我在文档中找到的相似。但是,当我运行它时,我收到以下警告:
警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: 语法错误或访问冲突:1087 [Microsoft][SQL Native Client][SQL Server]必须声明表变量“@P1”。(SQLExecute[1087] at ext\pdo_odbc\odbc_stmt.c:254) in (long file path) on line 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]: Invalid parameter number: parameter was not defined in (long file path) on line 39
为什么它不喜欢我准备好的陈述?