2013-03-23 70 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