簡體   English   中英

從mysql查詢中的單引號數據轉義

[英]escape from single quotes data in mysql query

我有一個愚蠢的問題。 我正在嘗試將大量數據從csv文件上傳到我的數據庫表。 一切正常。 但是我注意到csv文件中的許多行包含單引號等數據,例如(That's,It's等)。 在數據庫中的任何地方,單引號查詢都會引發語法錯誤。 我看到很多帖子都建議您使單引號這樣的數據,但是我有1000多個行,因此無法檢查每一行。 有什么編程方法可以避免此問題?

<?php

include "connection.php"; //Connect to Database

$deleterecords = "TRUNCATE TABLE tablename"; //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="";
        mysql_query($import) or die(mysql_error());
    }

    fclose($handle);

    print "Import done";

    print ""

    //view upload form
}else {

    print "<h1>Upload new CSV</h1><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>";

}

?>

首先,您需要停止使用mysql_*函數,因為它在php 7.0上被省略了,而是使用mysqli_*或PDO

您可以使用addslashes()添加反斜杠以轉義單引號和雙引號,或者由於要插入數據庫中,因此需要使用mysql_real_escape_string()

mysql_real_escape_string($import);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM