Ich habe ein Benutzerformular, das einen einzigen Datensatz "aktuell" setzt. Es kann nicht mehr als ein Datensatz gleichzeitig auf den aktuellen Stand gesetzt werden. Also, ich präsentiere dem Benutzer eine einzelne Dropdown-Liste, sie wählen das Element, das sie aktuell setzen möchten und drücken Sie "UPDATE" am unteren Rand des Formulars.Wie kann ich mit mysqli/php alle Datensätze aktualisieren, nachdem eine Abfrage bereits ausgeführt wurde?
Die PHP/Mysqli muss gehen und setzen Sie alle Datensätze Spalte "aktuelle" auf einen Wert von 0 dann aktualisieren Sie die aus dem Formular auf einen Wert von "1".
Zunächst habe ich einfach die Anzahl der Zeilen gezählt und eine Reihe von Abfragen ausgeführt, um die Spalte auf 0 oder 1 zu aktualisieren, wenn der Schleifenzähler = die ID der Zeile ist. Nun ... das ging schnell los, als ich anfing, an anderen Teilen zu testen, und die Indexzahlen wurden höher als die Gesamtzahl der Zeilen. Ja, dumme Art, es anfänglich zu tun!
Hier ist, was ich mit der PHP/MySQL-Code zu tun versucht:
// $link is the database link defined elsewhere. This does work as I use it all over the place
$setCurrent = X; // This is the number passed from my form
$init_query = "SELECT id, current FROM myTable";
if ($stmt = $link->$prepare($init_query) {
$stmt->execute() or die ($stmt->error);
$stmt ->bind_result($id, $current)
while ($stmt->fetch()){
if ($id == $setCurrent){
$update_sql = "UPDATE myTable SET current ='1' WHERE id='".$setCurrent."'";
$stmt2 = $link->prepare($update_sql);
$stmt2->execute;
}
else {
$update_sql = "UPDATE myTable SET current ='0' WHERE id='".$id."'";
$stmt2 = $link->prepare($update_sql);
$stmt2->execute;
}
$stmt->close();
Dies schlägt fehl, und gibt mir ein Fatal error: Uncaught Fehler: Rufen Sie auf eine Elementfunktion auf boolean ausführen in .....
Ich bin mein Gehirn über dies und kann nicht herausfinden, was zum Teufel ist los. Es ist ein paar Jahre her, dass ich in PHP/MySql gearbeitet habe und dies ist meine erste Erfahrung in OO Mysqli. Bitte seien Sie sanft :)
könnte praktisch sein, die Zeile zu erwähnen, wo Ihr Skript fehlschlägt. Welche Abfrage gibt den Fehler? –
ist es wahrscheinlich die extra $ in Vorbereitung()? –
Ich habe den Code von einem anderen System umgesetzt. Die Syntax funktioniert auf dem Entwicklungssystem. Die extra $ und die Curleys sind nur fette Fingersatz. – user3723090