Entschuldigung für vagen Titel. Ich habe derzeit ein Bearbeitungsformular, in dem ein Produkt ausgewählt werden kann und die Details in einer Form angezeigt werden, in der sie bearbeitet werden können. Leider wird bei der Bearbeitung jedes Produkt in der Produkttabelle bearbeitet und nicht nur das ausgewählte Produkt. So wählen Sie das Produkt, das ich bin mit dem Produktnamen = productnameinput etc etc (Code unten)Abfrage aktualisieren alle Datensätze, anstatt aufzeichnen, welche Eingabe übereinstimmt?
Datenbank: http://prnt.sc/f4tf5g (Vor einem edit)
folgendes versuchte das Hinzufügen WHERE-Anweisungen am Ende der Update-Abfrage:
UPDATE product SET CategoryID = :newCatId, ProductName = :newProdName, ProductDescription = :newProdDesc, stockCount = :newStock WHERE product.ProductName = :prodname
UPDATE product SET CategoryID = :newCatId, ProductName = :newProdName, ProductDescription = :newProdDesc, stockCount = :newStock WHERE ProductName = :prodname
PHP:
// edit product in database
$query="
SELECT * FROM category
";
$result = $DBH->prepare($query);
$result->execute();
$categories = $result->fetchAll();
//we need to select all products frist
$query3 = "
SELECT * FROM product
";
$result3 = $DBH->prepare($query3);
$result3->execute();
$allProducts = $result3->fetchAll();
//When the Product is selected this function is run
if (isset($_POST['choose'])) {
$query2 = "
SELECT product.*, category.* FROM product LEFT JOIN category ON category.CategoryID = product.CategoryID WHERE product.ProductName = :prodname
";
$result2 = $DBH->prepare($query2);
$result2->bindParam(':prodname', $_POST['product_name']);
$result2->execute();
$product = $result2->fetch();
}
//When the Update button is Pressed
if (isset($_POST['update'])) {
$query4 = "
UPDATE product SET CategoryID = :newCatId, ProductName = :newProdName, ProductDescription = :newProdDesc, stockCount = :newStock WHERE product.ProductName = :prodname
";
$result4 = $DBH->prepare($query4);
$result4->bindParam(':newCatId', $_POST['newcategory']);
$result4->bindParam(':newProdName', $_POST['productName']);
$result4->bindParam(':newProdDesc', $_POST['productDescription']);
$result4->bindParam(':newStock', $_POST['stockCount']);
$result4->bindParam(':prodname', $_POST['product_name']);
$result4->execute();
}
Sie benötigen eine 'where' Klausel über die' update'. – chris85
Versuchen Sie das jetzt, danke. Wird die Frage aktualisieren, wenn es nicht erfolgreich ist, aber ich denke, Sie haben Recht – Xander
@ chris85 Ziemlich sicher, dass Sie Recht haben, aber ich bekomme immer noch Fehler, ich habe meine Frage aktualisiert. Sollte ich $ post Produktname usw. einschließen? – Xander