Hi Ich versuche, die richtige Art zu lernen, vorbereitete Anweisungen zu verwenden, um SQL-Injektionen usw. zu vermeiden.
Wenn ich das Skript ausführe, bekomme ich eine Nachricht von meinem Skript mit den Worten: 0 Zeilen eingefügt, ich erwarte, dass 1 Zeilen eingefügt werden und natürlich die Tabelle aktualisieren. Ich bin mir meiner vorbereiteten Aussage nicht ganz sicher, da ich etwas recherchiert habe und ich meine, dass es von Beispiel zu Beispiel variiert.
Wenn ich meine Tabelle aktualisiere, muss ich alle Felder deklarieren oder ist es in Ordnung, nur ein Feld zu aktualisieren?
Jede Information wäre sehr hilfreich.
index.php
%Vor%classes / class.Scripts.inc
%Vor%Für Ihre Fragen:
Ich bekomme eine Nachricht von meinem Skript mit den Worten 0 Zeilen eingefügt
Dies liegt daran, dass Sie die Reihenfolge der Parameter beim Binden umgekehrt haben. Sie suchen also in der ID-Spalte nach dem numerischen Wert Ihres $ Inhalts, der wahrscheinlich als 0 interpretiert wird. Die WHERE-Klausel des UPDATE entspricht also null Zeilen.
Muss ich alle Felder deklarieren oder ist es in Ordnung, nur ein Feld zu aktualisieren?
Es ist in Ordnung, nur eine Spalte in einer UPDATE-Anweisung zu setzen. Andere Spalten werden nicht geändert.
Tatsächlich sind vorbereitete Aussagen nicht so komplex, wie alle denken. Ganz im Gegenteil ist ein vorbereiteter statement-basierter Code die einfachste und sauberste Art, eine Abfrage auszuführen. Nimm zum Beispiel deinen Code.
%Vor%Wie Sie sehen können, könnte der Code bei richtiger Verwendung sehr einfach und prägnant sein!
Du brauchst grundsätzlich nur drei Zeilen:
So einfach wie 1-2-3!
Beachten Sie, dass Sie nicht das Ergebnis jeder Funktion manuell überprüfen müssen, sondern den Berichtsmodus für mysqli einmal einstellen können. Fügen Sie dazu folgende Zeile vor mysqli_connect()
/ new mysqli
:
Das Ergebnis wird ungefähr das gleiche wie bei trigger_error sein, aber ohne eine einzige zusätzliche Codezeile!
Tags und Links php prepared-statement mysqli sql-update