Es gibt so eine Tabelle:
Das Benutzernamenfeld ist varchar(20).
Die Abfrage sieht so aus:
<code>$conn = new PDO(...); $sql = "select * from user where username=:username"; $username=123; $stmt=$conn->prepare($sql); $stmt->bindValue(":username", $username, PDO::PARAM_STR); $stmt->execute(); print_r($stmt->fetchAll());</code>
Ich weiß, dass $username hier tatsächlich falsch geschrieben ist, es sollte „123“ sein, aber da der Parameter unten als PDO::PARAM_STR angegeben ist, findet die Abfrage 2620.
Aber als ich PDO::PARAM_STR plötzlich in PDO::PARAM_INT änderte, war das Ergebnis, dass sowohl 2620 als auch 2621 abgefragt wurden.
Ich verstehe dieses Ergebnis nicht sehr. Was genau macht dieses PDO::PARAM_XXX? Bitte helfen Sie mir, es klar zu erklären, danke.
Okay, nachdem ich diese Frage beantwortet hatte, habe ich direkt versucht, „select * from user“ (Benutzername=123) in der Datenbank auszuwählen, und es wurden beide Ergebnisse ausgegeben. Es handelt sich also nicht um ein Problem mit PDO, aber ich verstehe es immer noch nicht . Warum hat 123 ohne Anführungszeichen ein solches Ergebnis?