簡體   English   中英

PHP錯誤mysql_num_rows返回期望的布爾錯誤。 我的查詢錯了嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM