如何在 MySQL 中使用准备好的语句截断表?

Kar*_*ran 5 php mysql prepared-statement

这将返回 true 但它没有截断表:

$this->db->query("TRUNCATE TABLE $tablename");
Run Code Online (Sandbox Code Playgroud)

但它在为准备好的语句创建数据库连接对象之前工作。

如何解决?另外,我想知道如何使用准备好的语句截断表。

Dee*_*kar 6

不,准备好的语句不是解决方案,因为无法绑定表名。所以避免对 Truncate Table 使用准备好的语句。

您不能绑定任何 SQL 文字但数据一个。所以关键字、运算符和任何标识符都不能使用准备好的语句进行绑定。您只能绑定数据。

PDO 准备好的语句在使用用户输入运行查询时很有用,因为它们允许您使用绑定参数等功能来清理用户输入。

所以在我的建议中,你不应该使用准备好的语句来截断表。

如果您真的想使用 Prepare 进行截断,如果您使用的是 Opencart,请使用以下代码:

$sql = sprintf('TRUNCATE TABLE %s%s', DB_PREFIX, $table);
$this->db->query($sql); 
Run Code Online (Sandbox Code Playgroud)

尝试一次,让我知道