[ad_1]
Bonjour! Je crée un tableau simple pour un projet scolaire et j’ai trouvé ce tutoriel utile
“https://www.youtube.com/watch?v=NqP0-UkIQS4″>
PHP et MySQL avec opérations CRUD : créer, lire, mettre à jour, supprimer – YouTube
J’ai tout suivi mais lorsqu’il s’agit de mettre à jour/éditer mon tableau cela donne toujours :
Erreur fatale : mysqli_sql_exception non interceptée : vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour connaître la bonne syntaxe à utiliser près de ‘= `2023-03-22T11:50:28`, Number_Of_Items = `5`, Item = `Tempra`, Expiration_D…’ à la ligne 1 dans C:\xampp\htdocs\Inven\edit.php:75 Trace de pile : #0 C:\xampp\htdocs\Inven\edit.php(75) : mysqli_query(Object(mysqli), ‘UPDATE clinic_i… ‘) #1 {main} lancé dans C:\xampp\htdocs\Inven\edit.php à la ligne 75.
Désolé pour le mauvais anglais, ce n’est pas ma langue maternelle et merci.
Ce que j’ai essayé :
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); } ?>
Solution 1
En SQL, les guillemets simples doivent être utilisés pour les valeurs de chaîne, pas pour les backticks. De plus, il manque un espace avant le « SET » dans votre requête qui se lit comme suit : « UPDATE clinic_inventorySET. Votre SQL devrait ressembler à :
$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";
Vous vous laissez également grand ouvert à l’injection SQL, vous devriez plutôt utiliser des instructions préparées et des requêtes paramétrées – Déclarations préparées et procédures stockées[^]
Votre code devrait, à titre indicatif, ressembler à ceci :
$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]
コメント