如何在Doctrine2中使用预准备语句截断表

时间:2014-03-27 19:42:29

标签: php mysql doctrine-orm

我正在做:

    $truncateSQL = 'TRUNCATE TABLE :tableName';
    $stmtTruncate = $em->getConnection()->prepare($truncateSQL);
    $stmtTruncate->bindValue('tableName',$this->tableName);
    $stmtTruncate->execute();

但得到错误:

[PDOException]                                                                                                       
  SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that  
   corresponds to your MySQL server version for the right syntax to use near ''image_sizes_t'' at line 1     

围绕表格的引号是否存在问题? $this->tableName只是一个字符串

1 个答案:

答案 0 :(得分:1)

由于'table_name'是无效的MySql语法,因此不能在预准备语句中将表名或列名用作占位符。

如果您需要使列/表名称安全,可以将它们包装在反引号中。

 "`".$table_name."`"