在下面的这种基于mysql的逐字编码中,将解析一个CSV文件,并动态创建一个mySQL表。我只是在-> http://www.johnboy.com/blog/tutorial-import-a-csv-file-using-php-and-mysql
如您所见,他们正在使用加号。
这段代码为我节省了时间,但是在我开始使用它之前(在5.3版本的WordPress环境中,其中mysqli或PDO不可用),我想动动脑筋,以确保这样做的安全性。
一切都归结为斜线。我很好奇他们为什么不选择my_real_escape_string。
//connect to the database
$connect = mysql_connect("localhost","username","password");
mysql_select_db("mydatabase",$connect); //select the table
//
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//
//redirect
header('Location: import.php?success=1'); die;
}
最佳答案
PDO
和MySQLi
具有用于创建准备好的查询的内置函数,这些查询使您可以使用引号和撇号而不会出现任何问题。
但对于您的问题:将addslashes()
替换为mysql_real_escape_string()
。addslashes
可以很容易地通过,并且根本不安全。
Read this article for more info about bypassing addslashes
.