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?
1 menjawab
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()
RANDOM ACCESS MEMORY' -RAM-
yang perlu diloloskan karena mengganggu tanda kutip tunggal di sekitar string Anda. Pos ini akan membantu Anda