有這樣一個表:
username欄位是varchar(20)。
查詢是這樣的:
<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>
我知道這裡的$username其實寫錯了,應該是'123',不過因為下邊又把參數指定成PDO::PARAM_STR了所以查詢到了2620這條。
但是當我突發奇想把PDO::PARAM_STR 改成PDO::PARAM_INT的時候,結果卻是2620、2621兩條都被查詢出來了。
這個結果我十分不理解,那PDO::PARAM_XXX到底做了什麼?求明白的幫我解釋一下,謝了。
好吧,敲完這個問題之後我直接在資料庫裡試了下select * from user where username=123,結果也是兩條都出來,那就不是PDO的問題了,但是還是不明白為什麼123不加引號會有這樣的結果。