[ad_1]
Halo! Saya membuat tabel sederhana untuk proyek sekolah dan menurut saya tutorial ini bermanfaat
“https://www.youtube.com/watch?v=NqP0-UkIQS4″>
PHP dan MySQL dengan Operasi CRUD: Buat, Baca, Perbarui, Hapus – YouTube
Saya mengikuti semuanya tetapi ketika memperbarui/mengedit tabel saya selalu menghasilkan:
Kesalahan fatal: Pengecualian mysqli_sql_tidak tertangkap: Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MariaDB Anda untuk sintaks yang tepat untuk digunakan di dekat ‘= `22-03-2023T11:50:28`, Number_Of_Items = `5`, Item = `Tempra`, Expiration_D…’ di baris 1 di C:\xampp\htdocs\Inven\edit.php:75 Jejak tumpukan: #0 C:\xampp\htdocs\Inven\edit.php(75): mysqli_query(Objek(mysqli), ‘UPDATE Clinic_i… ‘) #1 {main} dimasukkan ke dalam C:\xampp\htdocs\Inven\edit.php pada baris 75.
Maaf untuk bahasa Inggris yang buruk, bukan bahasa pertama saya dan terima kasih.
Apa yang saya coba:
query($sql); $row = $result->fetch_assoc(); if (!$row) { header("location: /inven/index.php"); exit; } $Date_Received = $row["Date_Received"]; $Number_Of_Items = $row["Number_Of_Items"]; $Item = $row["Item"]; $Expiration_Date = $row["Expiration_Date"]; $Last_Updated = $row["Last_Updated"]; $Quantity = $row["Quantity"]; } else{ $id = $_POST["id"]; $Date_Received = $_POST["Date_Received"]; $Number_Of_Items = $_POST["Number_Of_Items"]; $Item = $_POST["Item"]; $Expiration_Date = $_POST["Expiration_Date"]; $Last_Updated = $_POST["Last_Updated"]; $Quantity = $_POST["Quantity"]; do { if ( empty($id) || empty($Date_Received) || empty($Number_Of_Items) || empty($Item) || empty($Expiration_Date) || empty($Last_Updated) || empty($Quantity) ) { $errorMessage= "All the Fields are required"; break; } $sql = "UPDATE clinic_inventory" . "SET Date_Received = `$Date_Received`, Number_Of_Items = `$Number_Of_Items`, Item = `$Item`, Expiration_Date = `$Expiration_Date`, Last_Updated = `$Last_Updated`, Quantity = `$Quantity`" . "WHERE id = $id"; $result = mysqli_query($connection, $sql); if (!$result) { $errorMessage = "Invalid Query: " . $connection->error; break; } $successMessage = "Item Successfully Added"; header("location: /inven/index.php"); exit; } while (false); } ?>
Solusi 1
Dalam SQL, tanda kutip tunggal harus digunakan untuk nilai string, bukan tanda kutip terbalik. Selain itu, ada spasi yang hilang sebelum ‘SET’ dalam kueri Anda yang berbunyi – “UPDATE Clinic_inventorySET. Sql Anda akan terlihat seperti –
$sql = "UPDATE clinic_inventory SET " . "Date_Received = '$Date_Received', " . "Number_Of_Items = '$Number_Of_Items', " . "Item = '$Item', " . "Expiration_Date = '$Expiration_Date', " . "Last_Updated = '$Last_Updated', " . "Quantity = '$Quantity' " . "WHERE id = $id";
Anda juga membiarkan diri Anda terbuka lebar untuk injeksi SQL, Anda sebaiknya menggunakan pernyataan yang sudah disiapkan dan kueri berparameter – Pernyataan yang disiapkan dan prosedur tersimpan[^]
Kode Anda seharusnya, perkiraan kasarnya terlihat seperti ini –
$sql = "UPDATE clinic_inventory SET " . "Date_Received = ?, " . "Number_Of_Items = ?, " . "Item = ?, " . "Expiration_Date = ?, " . "Last_Updated = ?, " . "Quantity = ? " . "WHERE id = ?"; $stmt = $connection->prepare($sql); if ($stmt) { $stmt->bind_param("ssssssi", $Date_Received, $Number_Of_Items, $Item, $Expiration_Date, $Last_Updated, $Quantity, $id); $stmt->execute(); if ($stmt->affected_rows > 0) { //Your query was successful... $successMessage = "Item Successfully Added"; header("location: /inven/index.php"); exit; } else { //Handle error/s... $errorMessage = "Error updating item: " . $stmt->error; } $stmt->close(); } else { //Handle error/s... $errorMessage = "Error preparing statement: " . $connection->error; }
[ad_2]
コメント