我在查詢MySQL數據庫中的表時收到錯誤。這是一個標準與mysqli_num_rows當出現在變量沒有值多數民衆贊成在傳遞:mysqli_num_rows()期望參數雖然在同一頁上的早期查詢工作
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in folder/file.php on line 29
問題是我無法找到語法錯誤。我已經看了很多次了。這是我的代碼是:
$sql_messages = "SELECT * FROM messages WHERE to='$userid'";
$result_messages = $mysqli->query($sql_messages);
$num_rows_messages = mysqli_num_rows($result_messages);
我試過一個讀取數組,但是這給了我類似的錯誤。沒有什麼會傳遞到我想的$ result_messages。我重複了$ userid,並且有一個值,我檢查了我的數據庫,並且有一個'message'字段'to'。我已連接到正確的數據庫,因爲在此查詢前我有此代碼:
$sql="SELECT * FROM users WHERE firstname='$firstname' && lastname='$lastname'";
$result = $mysqli->query($sql);
$row = mysqli_fetch_array($result);
而且工作正常。這是頁面上的第三個查詢,是否存在某種限制?有沒有人看到我忽略的語法錯誤?謝謝,對不起,如果這是一個小小的錯誤!
就是這樣。這是使用'to'這個詞。我沒有意識到這是已經保留的。我跑了錯誤信息,沒有回來,所以這是一個很好的抓住。很高興知道,我需要確保將我的領域在將來更獨特... – MillerMedia
作爲旁註,您構建查詢的方式(通過字符串連接),您正在創建[SQL注入漏洞](https://www.owasp.org/index.php/Top_10_2010-A1)。考慮使用mysqli準備好的語句,或者如果可能的話使用PDO。 – Asaph
好的,謝謝。我被告知PDO,我會研究它。我有點從頭開始。非常感謝你的幫助! – MillerMedia