Saya mengalami kesalahan fatal: mysqli_SQL_Exception tidak tertangkap dalam kode edit PHP saya

pemrograman


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 –

PHP
$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 –

PHP
$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;
}

コメント

タイトルとURLをコピーしました