如何在MySQL中使用预处理语句截断表?

时间:2017-01-27 13:22:12

标签: php mysql prepared-statement

返回true但它没有截断表:

$this->db->query("TRUNCATE TABLE $tablename");

但它在为预准备语句创建数据库连接对象之前有效。

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

2 个答案:

答案 0 :(得分:2)

否,准备好的语句不是解决方案,因为无法绑定表名。 因此,请避免为截断表使用预准备语句。

您不能绑定任何SQL文字 l但数据一。因此,无法使用预准备语句绑定关键字,运算符和任何标识符。您只能绑定数据。

在使用用户输入运行查询时,PDO预处理语句非常有用,因为它们允许您使用绑定参数等功能来清理用户输入。

所以在我的建议中你不应该为truncate table使用预准备语句。

如果你真的想截断使用ready,如果你正在使用Opencart,请使用代码:

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

尝试一次让我知道

答案 1 :(得分:2)

对于TRUNCATE TABLE,您仍然可以同时使用PDO::preparePDOStatement::execute

$tablename = 'tblName';
$PDOStatement = $PDO->prepare("TRUNCATE TABLE $tablename;");
$PDOStatement->execute();

可悲的是,您无法使用命名(:name)或问号(?)参数标记。但是,关于TRUNCATE,您通常不会像查询准备好的语句一样经常使用它。