SELECT查询的PDO语法错误

时间:2013-12-22 05:41:22

标签: php mysql pdo

我有一个基本查询,它获取所有字段并导出文件,但它一直给我一个错误。我的代码如下所示:

$array = ['users'];

foreach($array AS $i){
        $file = $i.'.sql';

        $stmt = $pdo->prepare("SELECT * FROM ? INTO OUTFILE ?");
        try {
            $stmt->execute(array($i,$file));
        } catch (PDOException $e) {
            $log .= $e -> getMessage().'........ \n ';
        }
}

我一直都会遇到这个错误:

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 ''users' INTO OUTFILE 'users.sql'' at line 1.

这个的正确语法是什么?

2 个答案:

答案 0 :(得分:2)

它(语法)应该是另一种方式

SELECT * INTO OUTFILE ? FROM ?;

请参阅文档here

编辑:

JAL澄清时,表名不能作为 PreparedStatement 下的参数传递。所以你的查询应该像

SELECT * INTO OUTFILE ? FROM users;

答案 1 :(得分:1)

您无法准备表名为参数的语句。

请参阅Can PHP PDO Statements accept the table or column name as parameter?