【发布时间】:2016-07-19 09:20:00
【问题描述】:
我正在尝试创建一个在我的数据库上运行的脚本。查询本身在 phpmyadmin 中运行良好,但需要能够在其他地方运行。所以我的想法是,把它放到一个 php 脚本中。
我的查询如下所示:
SET @sql_text =
CONCAT ("SELECT
`table1`.`field1`,
`table2`.`field2`
FROM `table1`,`table2`
WHERE
`table1`.`field1`=`table2`.`field2`
into outfile '/pathtofolder/myresult-"
, DATE_FORMAT( NOW(), '%Y%m%d-%H:%i')
, ".csv'
FIELDS TERMINATED BY '|'
" );
PREPARE s1 FROM @sql_text;
EXECUTE s1;
DROP PREPARE s1;
现在我似乎在尝试将其放入 php 时遇到了麻烦。我的尝试:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "databasename";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = 'SET @sql_text =
CONCAT ("SELECT
`table1`.`field1`,
`table2`.`field2`
FROM `table1`,`table2`
WHERE
`table1`.`field1`=`table2`.`field2`
into outfile '/pathtofolder/myresult-"
, DATE_FORMAT( NOW(), '%Y%m%d-%H:%i')
, ".csv'
FIELDS TERMINATED BY '|'
" );
PREPARE s1 FROM @sql_text;
EXECUTE s1;
DROP PREPARE s1;'
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
?>
不幸的是,这似乎不起作用。我忽略了什么?
【问题讨论】:
-
查看上面突出显示的语法表明您需要在 sql 语句中转义单引号
-
好的,我确实使用了转义字符 end 仍然没有。然后我添加了一个;到语句的末尾,现在它终于做了一些事情......不幸的是它这样做了: 更新记录时出错:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'PREPARE s1 FROM @sql_text; 附近使用的正确语法;执行 s1; DROP PREPARE s1' 在第 5 行
标签: php mysql into-outfile