【问题标题】:remove ' apostrophes from PHP CSV Import从 PHP CSV 导入中删除 ' 撇号
【发布时间】: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


【解决方案1】:

使用file_get_contents,像这样:

$data = file_get_contents(...);
$cleanData = str_replace("'","",$data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多