所以我正在使用一个简单的登录脚本,我遇到了一个问题,我得到了这个错误。
<?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;
但我似乎无法解决它。我想我可能需要改变我从SELECT获取查询的方式,但不太确定如何。
答案 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
。