返回true但它没有截断表:
$this->db->query("TRUNCATE TABLE $tablename");
但它在为预准备语句创建数据库连接对象之前有效。
如何解决?另外,我想知道如何使用预准备语句截断表。
答案 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::prepare
和PDOStatement::execute
:
$tablename = 'tblName';
$PDOStatement = $PDO->prepare("TRUNCATE TABLE $tablename;");
$PDOStatement->execute();
可悲的是,您无法使用命名(:name
)或问号(?
)参数标记。但是,关于TRUNCATE
,您通常不会像查询准备好的语句一样经常使用它。