带占位符的简单准备语句不起作用
Simple Prepared statement with placeholder not working
所以我想知道为什么这个准备好的声明不起作用
$makr = 'users';
$stm = $con->prepare("SELECT * FROM ?");
$stm->bindparam(1, $makr);
$stm->execute();
我一直收到这个错误。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dd23834_house.'users'' doesn't exist' in /nfs/c11/h05/utt/23824/domains/.../html/home.php:77 Stack trace: #0 /nfs/c11/h05/utt/23824/domains/.../html/home.php(77): PDOStatement->execute() #1 {main} thrown in /nfs/c11/h05/utt/23824/domains/.../html/home.php on line 77
是的,我确实有一个 table 命名用户。
我只想从用户数据库中获取所有内容,其中没有 where 子句,但我也希望它是安全的。
Table 和 Column names 不能被 PDO 中的参数替换。您可以做的是:
$makr = 'users';
$stm = $con->prepare("SELECT * FROM $makr");
$stm->execute();
所以我想知道为什么这个准备好的声明不起作用
$makr = 'users';
$stm = $con->prepare("SELECT * FROM ?");
$stm->bindparam(1, $makr);
$stm->execute();
我一直收到这个错误。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dd23834_house.'users'' doesn't exist' in /nfs/c11/h05/utt/23824/domains/.../html/home.php:77 Stack trace: #0 /nfs/c11/h05/utt/23824/domains/.../html/home.php(77): PDOStatement->execute() #1 {main} thrown in /nfs/c11/h05/utt/23824/domains/.../html/home.php on line 77
是的,我确实有一个 table 命名用户。
我只想从用户数据库中获取所有内容,其中没有 where 子句,但我也希望它是安全的。
Table 和 Column names 不能被 PDO 中的参数替换。您可以做的是:
$makr = 'users';
$stm = $con->prepare("SELECT * FROM $makr");
$stm->execute();