Den Unterschied zwischen bindParam und bindValue verstehen
Frage:
Was ist der grundlegende Unterschied? zwischen PDOStatement::bindParam() und PDOStatement::bindValue()?
Antwort:
Laut der manuellen Eingabe von PDOStatement::bindParam liegt der Hauptunterschied im Referenzierungsverhalten der beiden Methoden. bindParam bindet Variablen als Referenzen, während bindValue die Werte von Variablen bindet. Dieses Referenzierungsverhalten kommt bei der Ausführung von PDOStatement::execute() ins Spiel.
bindParam-Beispiel:
Bedenken Sie den folgenden Code:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindParam(':sex', $sex); // bind the variable using bindParam $sex = 'female'; $s->execute(); // execute with WHERE sex = 'female'
Hier bindet bindParam $sex als Referenz. Wenn die Anweisung ausgeführt wird, verweist sie auf den aktuellen Wert von $sex, der in „female“ geändert wurde. Daher ruft die Abfrage Ergebnisse für „weibliche“ Studenten ab.
bindValue-Beispiel:
Nun untersuchen wir ein ähnliches Beispiel mit bindValue:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindValue(':sex', $sex); // bind the variable's value using bindValue $sex = 'female'; $s->execute(); // execute with WHERE sex = 'male'
In diesem Fall bindet bindValue den Wert von $sex zum Zeitpunkt der Bindung, der „männlich“ ist. Daher ruft die Abfrage immer Ergebnisse für „männliche“ Studenten ab, auch wenn der Wert von $sex später geändert wird. Dies zeigt das nicht referenzierende Verhalten von bindValue.
Das obige ist der detaillierte Inhalt vonbindParam vs. bindValue: Was ist der Hauptunterschied im PDO von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!