【问题标题】:php mysql query outfilephp mysql 查询输出文件
【发布时间】: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


【解决方案1】:

由于 sql 在单引号内但包含单引号,因此您需要使用反斜杠对其进行转义。

$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;'

【讨论】:

  • 即使进行了更正,它似乎也没有做任何事情。它不会回显成功或失败,即使我故意输入错误的用户名或密码,它也不会出错。只是似乎根本没有运行。我忽略了别的东西吗?
猜你喜欢
  • 2015-07-12
  • 1970-01-01
  • 2014-11-15
  • 2012-01-14
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
相关资源
最近更新 更多