PDO execute()抛出错误(42000)

时间:2012-07-04 21:08:55

标签: php pdo

我正在尝试使用PDO执行预准备语句但是我仍然遇到错误,尽管类似的语句在其他文件中运行良好。

这是我收到的错误:`Array([0] => 42000 [1] => 1064 [2] =>您的SQL语法有错误;请查看与您的MySQL对应的手册服务器版本,用于在第1行的''merch''附近使用正确的语法)1

以下是代码的缩写版本:

class Ben { 

    protected $_BTH;
    protected $_BTH;

    function __construct() {
        $this->_BBH = (---new PDO object---)
        $this->_BTH = $this->_BBH->prepare("SELECT * FROM :table");
    }
    my_function($table) {
        $this->_BTH->bindParam(':table', $table, PDO::PARAM_STR); // table == merch
        $this->_BTH->debugDumpParams(); // outputs SQL: [20] SELECT * FROM :table Params: 1 Key: Name: [6] :table paramno=-1 name=[6] ":table" is_param=1 param_type=2
        $execResult = $this->_BTH->execute();

        if ($execResult == false) {
            die(print_r($this->_BTH->errorInfo())); // prints out the error I wrote earlier
        }
    }
}

我无法弄清楚语法错误在哪里,我使用的是任何关键字吗?谢谢你的帮助:)

1 个答案:

答案 0 :(得分:2)

您无法准备表格的名称。你也不应该。如果您的表名以某种方式来自用户输入,您可能应该重新考虑您的数据库结构。