我不知道为什么我的代码会出现以下错误,如果有人能向我解释,我将不胜感激。
管理以减少除此之外的所有错误,我认为代码无法检查电子邮件是否已注册但不确定原因。
if (empty($_POST['email']))
{$errors[] = 'Please enter your email.';}
else
{$e = mysqli_real_escape_string($dbc,
trim($_POST['email']));}
if (empty($errors))
{
$q = "SELECT user_id FROM users WHERE email='$e'";
$r = mysqli_query ($dbc,$q);
if (mysqli_num_rows($r) != 0)
{$errors[] = 'Email address already registered.
<a href="login.php">Login</a>';}
警告:mysqli_num_rows()期望参数1为mysqli_result, 在第59行的C:\ Abyss Web Server \ htdocs \ register1.php中给出的布尔值
<!DOCTYPE HTML>
<html lang="en">
<head><meta charset="UTF-8">
<title>Surf Shop Registration</title>
</head>
<body>
<?php
$page_title = 'Register';
include ('includes/header.html');
# conditional test to only execute contained statements if form has been submitted.
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
# statements to be inserted here.
# open database connection and initialise array for error messages.
require ('../surfshop_db.php');
$errors = array();
# stores error msg if firstname field remains empty, or store value in a variable.
if (empty($_POST['first_name']))
{$errors[] = 'Please enter your first name.';}
else
{$fn = mysqli_real_escape_string($dbc,
trim($_POST['first_name']));}
# stores error msg if lastname field remains empty, or store value in a variable.
if (empty($_POST['last_name']))
{$errors[] = 'Please enter your last name.';}
else
{$ln = mysqli_real_escape_string($dbc,
trim($_POST['last_name']));}
# stores error msg if email field remains empty, or store value in a variable.
if (empty($_POST['email']))
{$errors[] = 'Please enter your email.';}
else
{$e = mysqli_real_escape_string($dbc,
trim($_POST['email']));}
# stores password as a variable if both password fields match, or store an error msg if not matching or first field is empty.
if (!empty($_POST['pass1']))
{
if ($_POST['pass1'] != $_POST['pass2'])
{$errors[] = 'Passwords do not match.';}
else
{$p = mysqli_real_escape_string($dbc,
trim($_POST['pass1']));}
}
else {$errors[] = 'Please enter your password.';}
# stores error msg if email already exists in database.
if (empty($errors))
{
$q = "SELECT user_id FROM users WHERE email='$e'";
$r = mysqli_query ($dbc,$q);
if (mysqli_num_rows($r) != 0)
{$errors[] = 'Email address already registered.
<a href="login.php">Login</a>';}
}
# stores user data in database and displays a confirmation message when registration is successful, closes the database connection and includes a page footer as well as exit the script.
if (empty($errors))
{
$q = "INSERT INTO users
(first_name, last_name, email, password, reg_date)
VALUES ('$fn', '$ln', '$e', SHA1('$p'), NOW())";
$r = mysqli_query ($dbc,$q);
if ($r)
{
echo '<h1>Registered!</h1>
<p>You are now registered.</p>
<p><a href="login1.php">Login</a></p>';
}
mysqli_close($dbc);
include ('includes/footer.html');
exit();
}
# displays all stored error msg when registration fails and closes database connection.
else
{
echo '<h1>Error!</h1>
<p id="err_msg">The following error(s) occurred:<br>';
foreach ($errors as $msg)
{
echo " -$msg<br>";
}
echo 'Please try again.</p>';
mysqli_close($dbc);
}
}
?>
<!--Sticky HTML form-->
<h1>Register</h1>
<form action="register1.php" method="POST">
<p>
First Name: <input type="text" name="first_name"
value="<?php if (isset($_POST['first_name']))
echo $_POST['first_name'];?>">
Last Name: <input type="text" name="last_name"
value="<?php if (isset($_POST['last_name']))
echo $_POST['last_name'];?>">
</p><p>
Email Address: <input type="text" name="email"
value="<?php if (isset($_POST['email']))
echo $_POST['email'];?>">
</p><p>
Password: <input type="password" name="pass1"
value="<?php if (isset($_POST['pass1']))
echo $_POST['pass1'];?>">
Confirm Password: <input type="password" name="pass2"
value="<?php if (isset($_POST['pass2']))
echo $_POST['pass2'];?>">
</p><p>
<input type="submit" value="Register"> </p>
</form>
<?php include ('includes/footer.html');?>
</body>
</html>