2013-01-20 82 views
0

我已經遍地搜索,但無法找到問題的解決方案。 我在php中有一個登錄腳本。當用戶輸入的值在數據庫中沒有匹配時,會顯示一條錯誤消息。但是另一個警告正在被拋出。mysqli_num_rows()總是拋出錯誤

Warning: mysqli_num_rows() expects parameter 1 to be mysqli, 
boolean given in C:\xampp\htdocs\index.php on line 26 

這是代碼。我知道一個類似的問題已經被問了很多次,但是他們都不能爲我提供解決方案。這裏是整個代碼。

<?php 

    session_start(); 
    require_once('connectionvariables.php'); 
    $error_msg = ""; 

    if(!isset($_SESSION['user_id'])) 
    { 
     if(!empty($_COOKIE['user_id']) && !empty($_COOKIE['username'])) 
     { 
      $_SESSION['user_id'] = $_COOKIE['user_id']; 
      $_SESSION['username'] = $_COOKIE['username']; 
    } 
    else 
     { 
     if(isset($_POST['submit'])) 
     { 
      $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); 
     $user_username = mysqli_real_escape_string($dbc,trim($_POST['username'])); 
     $user_password = mysqli_real_escape_string($dbc,trim($_POST['password'])); 

     if(!empty($user_username) && !empty($user_password)) 
     { 
      $query = "SELECT user_id,username FROM mismatch_user WHERE username =  '$user_username' AND password = SHA('$user_password')"; 
      $data = mysqli_query($dbc,$query); 
      if(mysqli_num_rows($data) == 1) 
      { 
       $row = mysqli_fetch_array($data); 
       $_SESSION['user_id'] = $row['user_id']; 
       $_SESSION['username'] = $row['username']; 
       setcookie('user_id',$row['user_id'],time() + (60 * 60 * 3600)); 
       setcookie('username',$row['username'],time() + (60 * 60 * 3600)); 
       header('Location: http://www.google.com');  

      } 
      else 
      { 
       $error_msg = 'enter a valid username and password'; 
      } 
     } 
     else 
     { 
      $error_msg = 'you have to enter username and password to Log In...'; 
     } 
    } 
    } 
} 
?> 

這裏的線26

if(mysqli_num_rows($data) == 1) 
+0

你能編輯你的代碼示例以顯示哪一行是第26行嗎? –

+1

@@ saladin akara .. 添加了導致錯誤的行。 – Pradeep

+1

無法找到affected_rows功能。但我認爲你的查詢失敗,因此它不是一個MySQL資源,它是一個布爾值。只要檢查$ data是否爲布爾值就可以繼續。並檢查您的查詢 – mercsen

回答

1

有可能在你的查詢時出現錯誤。例如,未知的列名或類似問題將使mysqli_query返回false(布爾值)。我建議你仔細檢查你的查詢內容以修復任何錯字。有關更多詳情,請參閱http://php.net/manual/en/mysqli.query.php

+0

+1擊敗我,只是檢查文件,以確保我是對的。 –

+0

謝謝..收穫..非常感謝.. !!! – Pradeep