Heim >Backend-Entwicklung >PHP-Tutorial >Welche Rolle spielt der dritte Parameter in PDOStatement::bindValue?

Welche Rolle spielt der dritte Parameter in PDOStatement::bindValue?

WBOY
WBOYOriginal
2016-09-19 08:51:551113Durchsuche

Es gibt so eine Tabelle:
Welche Rolle spielt der dritte Parameter in PDOStatement::bindValue?

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?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn