PHP使用mysql_real_escape_string内爆

时间:2016-05-31 18:48:11

标签: php mysql csv implode mysql-real-escape-string

我正在尝试将csv文件导入MySQL数据库。 CSV文件将包含用户生成的数据,需要进行清理。我尝试了以下方法。什么时候

$row = array_map('mysql_real_escape_string', $row);

被注释掉,它在没有问题的情况下工作,直到遇到应该被清理过的字符串。当我没有发表评论时,我会得到所有空白字符串。第二组眼睛将不胜感激。

<?php
//set the connection variables
$hostname = "localhost";
$username = "";
$password = "";
$database = "";
$filename = "upload/book.csv";

//connect to mysql database
$connection = mysqli_connect($hostname, $username, $password, $database) or die("Error " . mysqli_error($connection));

// open the csv file
$fp = fopen($filename,"r");

//parse the csv file row by row
while(($row = fgetcsv($fp,"1000",",")) != FALSE)
{
    //insert csv data into mysql table
    //$row = array_map('mysql_real_escape_string', $row);
    $sql = "INSERT INTO book 
                (QID, QStatus, Text, Date, SKU, Brand, Cat, 
                TopCat, SecondCat, NumberSent, Status, BHURL, 
                TTURL, QType, Answer) 
            VALUES('" . implode("','",$row) . "')";
    echo $sql . "<BR><BR>";


    if(!mysqli_query($connection, $sql))
    {
        die('Error : ' . mysqli_error());
    }

}

fclose($fp);
mysqli_close($connection);
?>

编辑:

感谢您的留言。不完全重复,但它让我走上了正确的道路。我添加了这个功能:

function array_map_callback($a) {
    global $connection;
    return mysqli_real_escape_string($connection, $a);
}

修改了这一行:

$row = array_map('array_map_callback', $row);

我将开始研究PDO和参数化查询。我很欣赏方向。

0 个答案:

没有答案