2014-09-21 44 views
0

爲我的網站創建一個登錄系統。 我得到了我的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); 

} 
+0

是查詢產生的錯誤,或根本沒有找到任何結果?如果是後者,那麼執行的實際運行時查詢是什麼,它是否與數據庫中的任何結果相匹配?如果您針對數據庫手動執行相同的查詢,結果會不同嗎? – David 2014-09-21 17:11:53

+0

當它調用if(empty($ r)){$ error [] =「它的空」;}它說$ r是空的。 如果我把sql語句並在數據庫中執行它,然後我得到我想要的結果。 – McBoman 2014-09-21 17:20:50

+0

如果「空」意味着有錯誤,請檢查數據庫是否有錯誤。如果「空」意味着沒有匹配的結果,請根據數據庫手動測試查詢,並查看找到的內容。如果表中沒有記錄與WHERE條件中的條件相匹配,則不會返回任何結果。 (注意:此後的徽標已損壞,如果結果數量大於幾乎不會表示電子郵件和密碼未找到的結果數量) – David 2014-09-21 17:24:51

回答

1

你可以試試這個

if(empty($errors)){ 
    $p = sha1($p); 
    $q = "SELECT userid, fname, lname FROM User WHERE email = '$e' AND pass = '$p'"; 

    $r = mysqli_query($dbc, $q); 
    if(!$r){ 
     die(mysqli_error($dbc)); 
    } 

    //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) > 0){ 
     $row = mysqli_fetch_assoc($r); 
     return array(true, $row['userid'], $row['fname'], $row['lname']); 
    }else{ 
     $errors[] = "Email address and password not found."; 
    } 
    return array_merge(array(true), $errors); 
} 
+0

它也不工作。 – McBoman 2014-09-21 17:20:12

+0

檢查'mysqli_error($ dbc)',因爲我更新了錯誤! – MH2K9 2014-09-21 17:22:37

相關問題