Saya sudah mencoba memasukkan data ke dalam database menggunakan kode ini, tetapi muncul kesalahan seperti ini:

Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'RANDOM ACCESS MEMORY' -RAM-','DDR1 RAM')' di baris 1

<?php
    $dbhost = 'localhost';
    $dbuser = '';
    $dbpass = '';
    $dbname = 'ticketstatus';

    $conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');
    mysqli_select_db($conn,$dbname);

    $fname ="report.csv";
    $chk_ext = explode(".",$fname);

    if(strtolower($chk_ext[1]) == "csv")
    {
        $filename = "report.csv";
        $handle = fopen($filename, "r");

        while (($data = fgetcsv($handle, 100000, ",")) !== FALSE)
        {
            //print_r($data);

            $sql1 = "INSERT into ticket(ticketID,ticketDate,ticketResDate,ticketStatus) values('$data[0]','$data[1]','$data[15]','$data[13]')";
            mysqli_query($conn,$sql1) or die(mysqli_error($conn));

            $sql2 = "INSERT into enduser(ticketID,endUserID,endUserName,endUserPhone,endUserLoc,endUserState) values('$data[0]','@dummy','$data[2]','$data[3]','$data[4]','$data[5]')";
            mysqli_query($conn,$sql2) or die(mysqli_error($conn));

            $sql3 = "INSERT into defect(ticketID,defectID,defectCategory,defectBrand,defectModel,defectSerialNo,defectType,defectDesc,defectCauses,defectReplace) values('$data[0]','@dummy','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[14]')";
            mysqli_query($conn,$sql3) or die(mysqli_error($conn));

            $sql4 = "INSERT into technician(ticketID,techID,techName,techRemarks) values('$data[0]','@dummy','$data[16]','$data[17]')";
            mysqli_query($conn,$sql4) or die(mysqli_error($conn));

            $sql5 = "INSERT into status(ticketID,statusID,statusAz,statusAF) values('$data[0]','@dummy','$data[18]','$data[19]')";
            mysqli_query($conn,$sql5) or die(mysqli_error($conn));

        }
        fclose($handle);

        echo "Successfully Imported";

    }
    else
    {
        echo "Invalid File";
    }

    ?>

Bagian mana yang saya lakukan salah?

0
emi 22 Mei 2015, 07:10
Anda memiliki tanda kutip tunggal di RANDOM ACCESS MEMORY' -RAM- yang perlu diloloskan karena mengganggu tanda kutip tunggal di sekitar string Anda. Pos ini akan membantu Anda
 – 
Val
22 Mei 2015, 07:14
Tolong buat daftar kueri SQL lengkap yang benar-benar gagal
 – 
Aleksandr Shumilov
22 Mei 2015, 07:14
, makasih, saya coba dulu :)
 – 
emi
22 Mei 2015, 07:36
, kesalahan muncul setelah saya mulai menambahkan kueri $sql3. Sebelum saya menambahkan kueri (hanya $sql1 dan $sql2), tidak ada kesalahan.
 – 
emi
22 Mei 2015, 07:36
Saya kira kemudian komentar pertama benar. Atau Anda bisa memposting string dari variabel $sql3 hanya untuk memastikan :)
 – 
Aleksandr Shumilov
22 Mei 2015, 07:40

1 menjawab

Jawaban Terbaik

Saat Anda memasukkan parameter ke dalam string kueri, Anda harus memastikan bahwa setiap karakter dalam data yang disisipkan dikodekan dengan benar sehingga tidak mengganggu karakter yang memiliki arti khusus untuk bahasa kueri, seperti tanda kutip tunggal yang digunakan untuk menunjukkan string literal.

Anda biasanya melakukan ini dengan meneruskan semua parameter string melalui mysqli_real_escape_string() fungsi:

while (($data = fgetcsv($handle, 100000, ",")) !== FALSE)
{
    $safe = array();
    foreach ($data as $d) {
        $safe[] = mysqli_real_escape_string ($conn, $d);
    }

    $sql1 = "INSERT into ticket(ticketID,ticketDate,ticketResDate,ticketStatus) values('$safe[0]','$safe[1]','$safe[15]','$safe[13]')";

    mysqli_query($conn,$sql1) or die(mysqli_error($conn));

    /* And so on */

Cara lain untuk mengatasi masalah ini adalah dengan menggunakan pernyataan yang disiapkan .


Perhatikan bahwa ada beberapa masalah keamanan dengan mysqli_real_escape_string(), tetapi sebagian besar dalam kasus yang tidak jelas. Anda dapat membaca selengkapnya di: injeksi SQL yang mengatasi mysql_real_escape_string()

1
Community 23 Mei 2017, 13:27