PHP Notice: Undefined offset
Ich will, update mehrere Zeilen mit checkbox. mein script funktioniert, aber zeigt Fehlermeldungen nach ini_set display_errors
Hier ist der code:
$count=mysql_num_rows($result);
if (isset($_POST['submit'])) {
$checked = $_POST['checkbox'];
for ($i = 0; $i < $count; $i++) {
$result = mysql_query("UPDATE trace SET status='Delivered' WHERE id='$checked[$i]'") or die(mysql_error());
}
}
Zeigt Notice: Undefined offset Zeile Anzahl
Was ist falsch?
- Undefined offset ???? es fehlt ein Teil der Nachricht
- Wo ist
$count
definiert? Auch Sie sind weit offen, um SQL-injection-Angriffe, und Sie werden gehackt wenn Sie nicht bereits. Verwenden Sie vorbereitet/parametrisierte Abfragen, um dieses problem vollständig vermeiden. - Sie sind ckecing $_POST['submit'], aber keine überprüfung $_POST['checkbox'] auch $count ist nicht definiert
- nicht paraphrasieren Fehlermeldungen. "Notice: Undefined offset." ist nicht die Fehlermeldung es gab Sie. Die Fehlermeldung war viel länger. Sie enthalten eine Zeilennummer. Wir müssen die gesamte Nachricht, und Sie müssen uns nur sagen, welche Zeile in deinem code die Zeilennummer.
- haben Sie eine
var_dump($_POST['checkbox'])
zu sehen, wie viele (falls vorhanden) Einträge, die Sie erhalten? Sie sind nur unter der Annahme, dass$count
ist die richtige Größe für die empfangenen Daten - Sie brauchen, um zu stoppen, schauen Sie sich an, was der code tut und wieder zu starten. Die
$count
ist die Anzahl der Ergebnisse aus der Datenbank zurückgegeben, und es wird verwendet, um den index einer scheinbar unabhängigen variable. Es sind noch Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler
ist im wesentlichen zu sagen, dass Sie versucht haben, um auf einen Wert eines Arrays, die nicht vorhanden ist.
Überprüfen Sie Ihren code, gibt es zwei mögliche Fälle, in denen dies geschehen kann, erste
$_POST['checkbox']
und zweiten$checked[$i]
.Können Sie diesen Fehler beheben, indem Sie so etwas wie dieses
Hinweis: der obige code sollte nicht in der Produktion verwendet werden, da es nicht sicher ist.
Beachten Sie auch, dass
mysql_
Funktionen sind veraltet. Verwenden Sie PDO oder mysqli für Datenbank-Abfragen.wenn Sie definiert:
Dann müssen Sie nur noch $count - 1, wie Sie beginnen iteration von null.
Oder sollten Sie besser die foreach statt - keine Notwendigkeit, sich mit dem zählen von index.