【发布时间】:2016-09-09 11:42:29
【问题描述】:
所以我在这里(再次)有点超出我的深度,并且需要在将 CSV 数据集导入我的数据库时从它中删除任何撇号...
我现在的代码是这样的
<?php
include "connection.php"; //Connect to Database
$deleterecords = "TRUNCATE TABLE riders_long"; //empty the table of its current records
mysql_query($deleterecords);
//Upload File
if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
echo "<h2>Displaying contents:</h2>";
readfile($_FILES['filename']['tmp_name']);
}
//Import uploaded file to Database
$handle = fopen($_FILES['filename']['tmp_name'], "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$import="INSERT into riders_long(Onlineentry,SaleID,FirstName,LastName,ClubTeamName,DOB,IsBCMember,MemberNo,Agreetermsandconditions,Agreeemailconfirmation,Agreeemailmarketing,LicenceCategory,Gender,Email,Daytimephone,Address1,Address2,TownCity,Region,Country,Postcode,EmergencyContactName,EmergencyContactPhoneNumber,DatePaid,AmountPaid,RefundAmount,PaymentType,Status) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]','$data[22]','$data[23]','$data[24]','$data[25]','$data[26]','$data[27]')";
mysql_query($import) or die(mysql_error());
}
fclose($handle);
print "Import done";
//view upload form
}else {
print "Upload new csv by browsing to file and clicking on Upload<br />\n";
print "<form enctype='multipart/form-data' action='upload.php' method='post'>";
print "File name to import:<br />\n";
print "<input size='50' type='file' name='filename'><br />\n";
print "<input type='submit' name='submit' value='Upload'></form>";
}
?>
老实说,我什至不知道从哪里开始...
我想我需要使用 str_replace() 函数...类似于
$remove = array("'");
$filtered = str_replace($remove, "", "Hello World of PHP");
$filtered 将是没有'撇号的字符串,但我有点困惑如何以及在哪里最好地整合它
非常感谢您提供关于从哪里开始的建议
【问题讨论】:
-
当然你真正需要做的不是删除撇号,而是将它们转义,这样它们就不会破坏你的 SQL 插入语句
-
如果您的服务器允许,您可以使用 stackoverflow.com/questions/11077801/import-csv-to-mysql-table/… 中的答案直接导入文件,或者您可以使用 mysqli_ 或 PDO 代替已弃用的 mysql_ 函数并使用绑定变量。 (与您所拥有的查询类型一起使用的旧方法是在所有字段周围使用
mysql_real_escape_string()(mysql_real_escape_string($data[5]))
标签: php csv import fopen fgetcsv