我已经遍地搜索,但无法找到问题的解决方案。 我在php中有一个登录脚本。当用户输入的值在数据库中没有匹配时,会显示一条错误消息。但是另一个警告正在被抛出。mysqli_num_rows()总是抛出错误
Warning: mysqli_num_rows() expects parameter 1 to be mysqli,
boolean given in C:\xampp\htdocs\index.php on line 26
这是代码。我知道一个类似的问题已经被问了很多次,但是他们都不能为我提供解决方案。这里是整个代码。
<?php
session_start();
require_once('connectionvariables.php');
$error_msg = "";
if(!isset($_SESSION['user_id']))
{
if(!empty($_COOKIE['user_id']) && !empty($_COOKIE['username']))
{
$_SESSION['user_id'] = $_COOKIE['user_id'];
$_SESSION['username'] = $_COOKIE['username'];
}
else
{
if(isset($_POST['submit']))
{
$dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
$user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));
if(!empty($user_username) && !empty($user_password))
{
$query = "SELECT user_id,username FROM mismatch_user WHERE username = '$user_username' AND password = SHA('$user_password')";
$data = mysqli_query($dbc,$query);
if(mysqli_num_rows($data) == 1)
{
$row = mysqli_fetch_array($data);
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['username'] = $row['username'];
setcookie('user_id',$row['user_id'],time() + (60 * 60 * 3600));
setcookie('username',$row['username'],time() + (60 * 60 * 3600));
header('Location: http://www.google.com');
}
else
{
$error_msg = 'enter a valid username and password';
}
}
else
{
$error_msg = 'you have to enter username and password to Log In...';
}
}
}
}
?>
这里的线26
if(mysqli_num_rows($data) == 1)
你能编辑你的代码示例以显示哪一行是第26行吗? –
@@ saladin akara .. 添加了导致错误的行。 – Pradeep
无法找到affected_rows功能。但我认为你的查询失败,因此它不是一个MySQL资源,它是一个布尔值。只要检查$ data是否为布尔值就可以继续。并检查您的查询 – mercsen