警告:mysqli_num_rows()期望参数1为mysqli_result

时间:2016-04-14 19:50:13

标签: php mysql mysqli

所以我正在使用一个简单的登录脚本,我遇到了一个问题,我得到了这个错误。



<?php
require_once './php/db_connect.php';
?>

<?php
$username=""; 
$password=""; 
// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 


$sql="SELECT * FROM logins WHERE username='$myusername' and password='$mypassword'";
$result=$db->query($sql);

// Mysql_num_row is counting table row
$count=mysqli_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>
&#13;
&#13;
&#13;

但我似乎无法解决它。我想我可能需要改变我从SELECT获取查询的方式,但不太确定如何。

2 个答案:

答案 0 :(得分:0)

您正在将面向对象与过程数据库连接混合。

如果您read the manual,您会看到以面向对象的方法,您应该使用:

  

int $ mysqli_result-&gt; num_rows;

所以

$sql="SELECT * FROM logins WHERE username='$myusername' and password='$mypassword'";
$result=$db->query($sql);

// Mysql_num_row is counting table row
$count= $result->num_rows;

答案 1 :(得分:-1)

$sql="SELECT * FROM logins WHERE username='$myusername' and password='$mypassword'";
$result=$db->query($sql);

此处,您的查询因某种原因失败,并返回布尔值FALSE,而不是mysqli_result的实例。

您应该在此处理错误,而不是将其传递给mysqli_num_row