爲我的網站創建一個登錄系統。 我得到了我的mysqli_query是空的問題:mysqli_query給出空值
代碼:$r = mysqli_query($dbc, $q); returns empty.
我認爲這個問題是在SQL語言中,我通過它:
$q = "SELECT userid, fname, lname FROM User WHERE email='$e' AND pass=SHA1('$p')";
如果我執行上面的SQL與數據,即時通訊實際上是從形式獲取然後我會得到結果我尋找。所以我認爲它的PHP和SQL結合起來有一個錯誤。
if(empty($errors)){
$q = "SELECT userid, fname, lname FROM User WHERE email='$e' AND pass=SHA1('$p')";
$r = mysqli_query($dbc, $q);
//Check for right data
$errors[] = $e;
$errors[] = $p;
//Check if connection is up
if($dbc != null){
$errors[] = "Connection up";
}
//Check query
if(is_null($r)){
$errors[] = "Query is null";
}
//Check query for being empty
if(empty($r)){
$errors[] = "Its empty";
}
if(mysqli_num_rows($r) == 1){
$row = mysqli_fetch_array($r, MYSQLI_ASSOC);
return array(true, $row);
}else{
$errors[] = "Email address and password not found.";
}
return array(false, $errors);
}
是查詢產生的錯誤,或根本沒有找到任何結果?如果是後者,那麼執行的實際運行時查詢是什麼,它是否與數據庫中的任何結果相匹配?如果您針對數據庫手動執行相同的查詢,結果會不同嗎? – David 2014-09-21 17:11:53
當它調用if(empty($ r)){$ error [] =「它的空」;}它說$ r是空的。 如果我把sql語句並在數據庫中執行它,然後我得到我想要的結果。 – McBoman 2014-09-21 17:20:50
如果「空」意味着有錯誤,請檢查數據庫是否有錯誤。如果「空」意味着沒有匹配的結果,請根據數據庫手動測試查詢,並查看找到的內容。如果表中沒有記錄與WHERE條件中的條件相匹配,則不會返回任何結果。 (注意:此後的徽標已損壞,如果結果數量大於幾乎不會表示電子郵件和密碼未找到的結果數量) – David 2014-09-21 17:24:51