mysql_result()期望参数1是资源,给定对象

时间:2015-06-06 10:21:48

标签: php mysql mysqli

作为登录系统的一部分,我需要检查数据库中是否存在用户名,因此我创建了一个查询,检查用户输入的用户名是否已存在。

使用mysql_result我检查id是否更大为null。如果是:用户存在,如果不存在,则用户不存在。但是这里出错了,wampserver给了我这个错误:

  

警告:mysql_result()期望参数1是资源,第6行的users.php中给出的对象

function user_exists($username){
    global $user_db;
    $username = sanitize($username);
    $query = mysqli_query($user_db , "SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username'");
    $result = mysql_result($query, 0); //line 6
    if(!$result){
        return false;
    }else{
        return true;
    }
}

这是调用该函数的代码:

if(user_exists('name') === true){
    echo 'exists';
}

$user_db = mysqli_connect("localhost","root","","databaseName"); 

我尝试了什么:
如果我这样做:mysqli_result($result,0,"id");我收到此错误:Call to undefined function mysqli_result()。 从this问题

得到了这个建议

像我这样的问题的所有答案都说你不应该使用mysqlmysqli这两个但只有其中一个,但是当我只使用mysli时,我得到的错误就像我在这一段上面说过一段。

有人可以告诉我如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

你正在混合mysql和mysqli。 mysqli驱动程序中没有mysqli_result()函数。但是我找到了解决问题的方法。来自PHP文档中的评论:

  

将旧项目从使用mysql扩展转换为mysqli   扩展,我发现最烦人的变化是缺乏一个   mysqli中对应的mysql_result函数。虽然mysql_result是一个   通常很糟糕的功能,它对于获取单个数据非常有用   结果集中的结果字段 value (例如,如果查找a   用户的ID)。

     

虽然你可能想要,但mysql_result的行为在这里是近似的   将其命名为mysqli_result以外的其他东西,以避免思考   它是一个实际的内置功能。

代码:

<?php  function mysqli_result($res, $row, $field=0) { 
      $res->data_seek($row); 
      $datarow = $res->fetch_array(); 
      return $datarow[$field];  }  
?>

来源:http://php.net/manual/en/class.mysqli-result.php