Saya memiliki kode php sederhana untuk mem-parsing beberapa data dari file JSON dan menyimpannya ke dalam database mysql. Tapi itu menunjukkan kesalahan berikut:

Parse error: syntax error, unexpected 'my_name' (T_STRING) in C:\xampp\htdocs\mycode.php on line 25

Kode php saya adalah sebagai berikut:

$sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ($row['my_name'], $row['hobby'], $row['other'])"; //line 25

mysqli_query ($conn, $sql);        

Mengapa itu menunjukkan kesalahan sintaks? Apakah ada yang salah dalam kueri?

-3
kov 21 September 2019, 12:42

1 menjawab

Jawaban Terbaik

Anda perlu menyertakan placeholder yang diinterpolasi dalam kurung kurawal, yaitu $row['my_name'] -> {$row['my_name']}:

    $sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ({$row['my_name']}, {$row['hobby']}, {$row['other']})";

Ini hanya membahas sintaks PHP. Kesalahan sintaks SQL yang Anda dapatkan sekarang adalah masalah berikutnya. Hal paling sederhana untuk "memperbaiki" ini adalah dengan memasukkan apostrof tambahan di sekitar placeholder, mis.

    $sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ('{$row['my_name']}', '{$row['hobby']}', '{$row['other']}')";

TAPI JANGAN LAKUKAN ITU, karena kode ini adalah contoh kerentanan Injeksi SQL klasik.

Pertimbangkan untuk menggunakan pernyataan yang disiapkan sebagai gantinya — ini menghilangkan interpolasi string PHP sama sekali.

1
Alex Shesterov 21 September 2019, 10:56