簡體   English   中英

$ conn-> query(…)的結果可以不為空,記錄為0

[英]can a result of $conn->query(…) be not null with 0 records

我在一些必須處理的舊PHP代碼中遇到了以下內容。 我的問題是,是否都需要這些條件? 換句話說,如果返回結果,它必須返回的記錄大於零,對嗎? 反過來說-如果$ result為False,我可以假定未找到任何記錄嗎?

$sql = "SELECT * FROM houses WHERE ownerphone=$pn";
$result = $conn->query($sql);
if ($result) {
    $count = $result->num_rows;
    if ($count > 0){
       ....Stuff happens here...
    } else {
        ...What happens here?...
    }
} else {
     ...Other Stuff happens here
}

是的,兩者都是必需的。

如果返回結果,它必須返回的記錄大於零,對嗎?

錯誤。

如果沒有得到結果,那么就會出錯,並且沒有對象可以讀取返回的結果數。

可以從成功的請求中獲取零行。

如果$ result為False,我可以假定未找到任何記錄嗎?

嗯,是。 有點。 這就是為什么if語句使您停止檢查結果是否為False的行數的原因。

…但是因為有錯誤而不要返回行與沒有因為找不到要返回行而不同。

不,你不能假設這一點。 如果嘗試執行查詢時出錯,則$conn->query()返回false 與任何行都不匹配的SELECT查詢不是錯誤。

錯誤包括查詢中語法錯誤或與數據庫服務器通信出現問題。

文檔 ;

失敗時返回FALSE。 對於成功的SELECT,SHOW,DESCRIBE或EXPLAIN查詢,mysqli_query()將返回mysqli_result對象。 對於其他成功的查詢,mysqli_query()將返回TRUE。

這意味着它將基本不會返回null 第一個檢查( if ( $result )只是為了確保一切順利,並且您從數據庫中得到了某種響應。第二個檢查是對您的行進行計數;獲得結果並不意味着查詢實際上返回了數據,因為您可能正在搜索不存在的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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