2013-03-23 140 views
-1

我有mysql_num_rows問題。當我嘗試登錄時,會發生以下警告:mysql_num_rows()導致了警告

警告:mysql_num_rows()期望參數1是資源,對象在路徑/到/ userClass.php行#no中給出。

我搜索了這個錯誤,並得到了,那是因爲錯誤的SQL查詢造成的。但我不確定這一點。請幫忙。

Userclass.php

登錄功能

$sql = "SELECT id, username FROM `user` WHERE username = '$username' AND hashed_password ='$password'"; 

$result = mysqli_query($this->con, $sql); 
if (!$result) die ("Database query failed" . mysql_error()); 
else{ 
    $count = mysql_num_rows($result); 
     if($count == 1){ 
      $found_user = mysql_fetch_array($result); 
      $_SESSION['user_id'] = $found_user['id']; 
      $_SESSION['username'] = $found_user['username'];  
      header("Location:{$location}"); 
     }else{ 
      //username/password combo was not found in the database 
      $this->pass_notverified = "Username/password incorrect.";      
      return; 
     } 
} 

的header.php
<?php require_once 'class/userClass.php';?> 
<?php $obj = new userClass;?> 

<?php 
if(isset($_POST['login'])){ 
    $obj->login($_POST,"home.php"); 
}?> 
+5

的組合則完整的代碼做同樣的...你cannt混合的mysqli和mysql – alwaysLearn 2013-03-23 13:38:21

+0

您注射'$之前不要使用'mysqli_real_escape_string'用戶名和密碼'到你的查詢,不是嗎?或者,更好的是,使用參數化查詢。 – 2013-03-23 13:41:08

+0

'mysql _ *()'API已被棄用。改用MySQLi或PDO_MySQL擴展。 [已過時mysql_ *()](http://php.net/manual/en/function.mysql-connect.php) – SparKot 2013-03-23 14:16:28

回答

2

簡單的解決方案:

$result = mysqli_query($this->con, $sql); 

$count = mysql_num_rows($result); 
$found_user = mysql_fetch_array($result); 

不在一起工作。 使用$和mysqli功能計數和$ found_user(你可以找到他們here

0

使用mysqli_num_rows,而不是mysql_num_rowsmysqli_fetch_array而不是mysql_fectch_array

,如果您使用的mysqli功能查詢您不能使用mysql和mysqli的functiins