[英]PHP error mysql_num_rows returns expects boolean error. is my query wrong?
mysql_num_rows()期望參數1為資源,第33行給出布爾值
if($password!=$password_again){
echo'password did not match';
}else{
$query="SELECT username FROM users WHERE 'username'='$username'";
$query_run=mysql_query($query);
if(mysql_num_rows($query_run)==1){
echo'the username'.$username.'already exists';
}else{
echo'ok';
}
}
'username'='$username'
更改為username='$username'
從mysql_query返回布爾值意味着存在錯誤-查詢中存在語法錯誤(您的語法錯誤),或者其他錯誤(例如,第一次連接失敗)。
將查詢調用更改為
$query_run=mysql_query($query) or die(mysql_error());
我看到的語法錯誤是由於引號錯誤引起的
$query="SELECT username FROM users WHERE 'username'='$username'";
^--------^----
當您引用這樣的字段名稱時,它不再是字段名稱,而是一個字符串。 但是,這不是SQL語法錯誤,而是邏輯錯誤,因為您進行的是無效的比較,而不是將真實的用戶名與數據庫中的用戶名字段進行比較。
您的SELECT查詢看起來不正確:
$query="SELECT username FROM users WHERE 'username'='$username'";
應該可能是這樣的
$query="SELECT username FROM users WHERE username='$username'";
即不要將列名放在單引號中。 但這甚至很危險-它會使您的代碼容易受到SQL注入攻擊。
您沒有在將mysql_query發送到mysql_num_rows之前檢查它是否返回了資源或FALSE。 請查看此處的文檔以正確使用:
http://php.net/manual/zh/function.mysql-query.php
在您的情況下,您要將FALSE傳遞給mysql_num_rows函數,這就是為什么會出現該錯誤的原因。
mysql_num_rows需要一個MySQL資源。 由於您的查詢錯誤,由於您的WHERE子句中'username'周圍的單引號,$ query_run被設置為false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.