如何在PDO语句中对表名进行参数化?

时间:2013-10-16 13:28:10

标签: php mysql sql pdo prepared-statement

问题

运行PDO语句时出现 PDO语法错误,其中表名已参数化,如

$sql = 'DELETE FROM :table_name';
$query = $this->db->prepare($sql);
$query->execute(array(':table_name' => "mytable"));

我可以用SELECT等重现问题,所以这是一个普遍的问题。 我试着用反引号写它,前面有数据库名,两者结合等,没什么用。

问题

怎么做?

2 个答案:

答案 0 :(得分:5)

您无法参数化IN子句中的表名,列名或任何内容(它必须单独绑定)。请参阅this上的php.net评论。

另请参阅:Can PHP PDO Statements accept the table or column name as parameter?

答案 1 :(得分:0)

您无法使用PDO和MySQLi预处理语句对表名进行参数化,因为SQL Server在执行实际查询之前需要基本信息来准备查询。