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

Sli*_*liq -3 php mysql sql pdo prepared-statement

问题

运行PDO语句时,我得到一个PDO语法错误,其中表名是参数化的,就像在

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

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

这该怎么做 ?

Ama*_*ali 5

您不能参数化表名,列名或IN子句中的任何内容(它必须单独绑定).在php.net上看到这条评论.

另请参阅:PHP PDO语句是否可以接受表或列名作为参数?