爲什麼這部分代碼即使不應該也會返回true
?PHP的PDO語句返回不正確的行數與SELECT?
$stmt = $dbh->prepare("SELECT COUNT(`user_id`) FROM `users` WHERE `username`= :username LIMIT 1");
$stmt->bindParam(':username', $username);
$stmt->execute();
return ($stmt->rowCount() == 1) ? true : false;
如果我進入一個領域的用戶名已經被註冊,則返回true,然後輸出:
That username has already been taken!
但是,如果我輸入沒有註冊一個用戶名,它仍然返回true並輸出上面的行。我不確定這是爲什麼,以及如何修復。
我知道PHP manual指出rowCount()
有一些問題SELECT
查詢,但我不能找到一種解決方法,返回受一個SELECT
查詢的行數。
謝謝你的回答 - 我想知道更多關於選擇true。有沒有關於它的文檔?我試過搜索但找不到任何東西。 – ReactingToAngularVues
它與執行'select 1'或'select'blahblahblah'或'select 1 + 1'沒有區別。你不必從表格中選擇,你可以選擇返回的固定文本(或者在'1 + 1'的情況下返回'2')。但是,有些DB(如oracle)要求您爲這些查詢選擇一個名爲'dual'的特殊僞表。 –