我正在尝试将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和参数化查询。我很欣赏方向。