【问题标题】:Question for quotations issue in PHP codePHP代码中的报价问题
【发布时间】:2019-08-27 19:05:44
【问题描述】:

基于 '"' 或其他原因的查询失败?

我尝试使用'"'或'\"'或'\"'

MySQL 代码:

SELECT Name, Address, City FROM PERSONAL WHERE Name LIKE "A%" INTO OUTFILE '/tmp/output.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

当上面的 SQL 语句在 MySQL 命令行中工作时。然后我尝试像下面这样转换成 PHP 编码:

$filepath="/tmp/output.csv";
$query = "SELECT Name, Address, City FROM PERSONAL_DATA WHERE Name LIKE "A%" INTO OUTFILE '$filepath' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'";

$result=mysqli_query($connection,$query) or die (mysqli_error());

在我看来,我对引用有疑问。
当我使用OPTIONALLY ENCLOSED BY '"'

我试过OPTIONALLY ENCLOSED BY '\"''\\"'

查询测试失败。 PHP 页面返回空,有时会在日志中出现解析错误。

【问题讨论】:

  • 为了澄清我发布此内容时的可读性问题:'"' 这由单引号、双引号和单引号组成。
  • 您还需要转义 "%A" 周围的引号。试试$query = "SELECT Name, Address, City FROM PERSONAL_DATA WHERE Name LIKE \"A%\" INTO OUTFILE '$filepath' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'";
  • 而错误信息是...?
  • PHP quotes inside quotes的可能重复

标签: php mysqli


【解决方案1】:

由于您使用双引号作为 PHP 字符串的分隔符,因此您需要转义字符串中的所有双引号。您还可以在内部使用单引号,以避免转义它们。

$query = "SELECT Name, Address, City FROM PERSONAL_DATA WHERE Name LIKE 'A%' INTO OUTFILE '$filepath' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'";

【讨论】:

    【解决方案2】:

    您可以在 PHP 中对字符串使用单引号并转义字符串中使用的所有单引号。

    $filepath = '/tmp/output.csv';
    $query = 'SELECT Name, Address, City FROM PERSONAL_DATA WHERE Name LIKE \'A%\' INTO OUTFILE \'' . $filepath . '\' FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' LINES TERMINATED BY \'\r\n\'';
    $result = mysqli_query($connection, $query) or die (mysqli_error());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2016-10-02
      • 1970-01-01
      相关资源
      最近更新 更多