我有一个基本查询,它获取所有字段并导出文件,但它一直给我一个错误。我的代码如下所示:
$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.
这个的正确语法是什么?
答案 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?