如何在 PHP 的 mysqli_query() 中转义双引号字符?

Posted

技术标签:

【中文标题】如何在 PHP 的 mysqli_query() 中转义双引号字符?【英文标题】:how to escape double quote characters in mysqli_query() in PHP? 【发布时间】:2014-11-10 00:15:50 【问题描述】:

我正在尝试使用 CSV 文件更新 mysql 数据库。

我有这个查询在 phpmyadmin 中工作

LOAD DATA INFILE 'C:/wamp/www/website/test_mysql_import.csv' INTO TABLE `csv_preset` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n'    

但是当我尝试在 mysqli_query 函数中使用它时,它不会更新数据库。

这是完整的代码块:

<?php require "db_connect.php"; ?>    
    <?php
    $csv_file = "C:/wamp/www/website/test_mysql_import.csv";

    $sql_dump ="TRUNCATE TABLE csv_preset";
    $sql_update = "LOAD DATA INFILE '$csv_file' INTO TABLE `csv_preset` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n'");
    mysqli_query($db_conx, $sql_dump);
    mysqli_query($db_conx, $sql_update);
?>    

【问题讨论】:

【参考方案1】:

试试这个代码:

        $sql_update = "LOAD DATA INFILE $csv_file INTO TABLE `csv_preset` FIELDS TERMINATED BY ',' ENCLOSED BY &quot; ESCAPED BY &quot; LINES TERMINATED BY \\n";

你的变量不需要单引号,因为它已经是双引号了。双引号可以用htmlcode 转义,换行用“\”。

【讨论】:

【参考方案2】:
<?php require "db_connect.php"; ?>    
    <?php
    $csv_file = "C:/wamp/www/website/test_mysql_import.csv";

    $sql_dump ="TRUNCATE TABLE csv_preset";
    $sql_update = "LOAD DATA INFILE '".$csv_file."' INTO TABLE `csv_preset` FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n'");
    mysqli_query($db_conx, $sql_dump);
    mysqli_query($db_conx, $sql_update);
?> 

【讨论】:

工作@Macbernie 谢谢分配,我实际上忘记添加一个 ;在 $sql_dump 查询结束时,这也导致了问题

以上是关于如何在 PHP 的 mysqli_query() 中转义双引号字符?的主要内容,如果未能解决你的问题,请参考以下文章

mysqli_query():在PHPUnit中测试PHP函数时无法获取mysqli

警告:mysqli_query():无法获取 mysqli [重复]

php mysqli_query() 错误

PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别

php mysqli_query 函数似乎运行了两次

php mysqli mysqli_query() mysqli_real_query()