遇到简单的php错误-mysqli_num_rows()需要登录系统的参数
我知道有些帖子与错误消息mysqli_num_rows期望参数1是mysqli_result(给定布尔值)有关。然而,我仍然无法理解为什么我的脚本不工作…grr这个错误对我的脚本来说意味着什么?我该如何着手纠正它??我对php比较陌生,所以请耐心等待。我正在尝试设计一个简单的登录脚本 这是我的文件cwk_登录工具遇到简单的php错误-mysqli_num_rows()需要登录系统的参数,php,mysqli,Php,Mysqli,我知道有些帖子与错误消息mysqli_num_rows期望参数1是mysqli_result(给定布尔值)有关。然而,我仍然无法理解为什么我的脚本不工作…grr这个错误对我的脚本来说意味着什么?我该如何着手纠正它??我对php比较陌生,所以请耐心等待。我正在尝试设计一个简单的登录脚本 这是我的文件cwk_登录工具 <?php #Makes Logging in Possible by checking for errors # Connect to database o
<?php
#Makes Logging in Possible by checking for errors
# Connect to database or quit
$dbc = @mysqli_connect ( 'localhost', 'root', '', 'cswk_db' ) OR die ( mysqli_connect_error() ) ;
function load(){
header("http://localhost/SecondCswkAttempt/2017%20Web%20Scenario/cwk_index.php");
exit();
}
#Function to check username and password
function validate( $dbc, $username = '' , $pwd = '')
{
#Initialise errors array
$errors = array() ;
#Check a username has been entered
if ( empty( $username ) ) {
$errors[] = 'Enter your username .' ;
} else {
$u = mysqli_real_escape_string( $dbc , trim( $username) );
}
#Check password has been entered
if ( empty( $pwd) ) {
$errors[] = 'Enter your password.' ;
} else {
$p = mysqli_real_escape_string( $dbc , trim( $pwd) );
}
#On success retrieve user_id, and username from the 'users' database
if ( empty( $errors) ) {
$q = "SELECT user_id, username, password, FROM users WHERE username = '$u' AND pass = '$p' " ;
$r = mysqli_query ($dbc, $q ) ;
#Check password field
if ( mysqli_num_rows( $r ) == 1 ) {
$row = mysqli_fetch_array ( $r , MYSQLI_ASSOC) ;
return array(true, $row ) ;
}
#Or on failure set error message
else {
$errors[] = 'username and password not found.' ; }
#On failure retrieve error message/s
return array( false, $errors );
}
}
?>
但是,此文件与另一个文件配合使用,以使我的登录系统正常工作。这是名为cwk_login_action.php的文件:
<?php #PROCESS LOGIN ATTEMPT
#Check form submitted
if ($_SERVER[ 'REQUEST_METHOD' ] == 'POST' )
{
# Connect to database or quit
$dbc = @mysqli_connect ( 'localhost', 'root', '', 'cswk_db' ) OR die ( mysqli_connect_error() ) ;
#Get connection, load and validate functions
require ('cwk_login_tools.php');
#Check login
list ( $check, $data ) = validate ( $dbc, $_POST[ 'username' ] , $_POST[ 'pass' ] );
#On success set session data and display logged in page
if ( $check ) {
session_start();
$_SESSION[ 'user_id' ] = $data[ 'user_id' ];
$_SESSION[ 'username' ] = $data[ 'username' ];
load ( 'home.php') ;
}
#Or on failure set errors
else { $errors = $data; }
#Close database connection
mysqli_close( $dbc ) ;
}
#Continue to display login page on failure
include ( 'cwk_login.php')
?>
此错误表示MySQL查询无法执行。在本例中,它看起来像一个语法错误:
$q = "SELECT user_id, username, password, FROM users WHERE username = '$u' AND pass = '$p' " ;
密码后有一个逗号。正在尝试删除它以修复语法错误。此外,您似乎同时引用了password和pass-它在数据库中的名称是什么?我想其中一个专栏是不存在的。非常感谢您的回复-语法错误似乎是我生活中的祸根。我非常确定这是答案,并将更正代码。谢谢
$q = "SELECT user_id, username, password, FROM users WHERE username = '$u' AND pass = '$p' " ;