这是我的 php 注册表。这段代码有问题。当我输入数据时,我的代码没有将数据保存到数据库,并且它没有检查数据库中是否有相同的用户名或电子邮件,如果我输入密码1!=密码2,则有 “警告:mysqli_query() 期望参数 1 为 mysqli,第 27 行 C:\xampp\htdocs\tugas3\register.php 中给出的资源” “警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,第 28 行 C:\xampp\htdocs\tugas3\register.php 中给出的 null”。帮我解决这个问题。我的数据库使用 XAMPP。我的数据库名称是 TUGASPPW,表名称是 Users。
<?php
$error=''; // Variable To Store Error Message
$errorName='';
$errorPass='';
$errorEmail='';
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password1']) || empty($_POST['password2']) || empty($_POST['email'])) {
$error = "Semua data harus terisi";
}
else {
// Define $username and $password
$username=$_POST['username'];
$password1=$_POST['password1'];
$password2=$_POST['password2'];
$email=$_POST['email'];
// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$connection = mysql_connect("localhost", "root", "");
// To protect MySQL injection for Security purpose
$username = stripslashes($username);
$password1 = stripslashes($password1);
$password2 = stripslashes($password2);
$email = stripslashes($email);
$username = mysql_real_escape_string($username);
$password1 = mysql_real_escape_string($password1);
$password2 = mysql_real_escape_string($password2);
$email = mysql_real_escape_string($email);
// Selecting Database
$db = mysql_select_db("TugasPPW", $connection);
$query = ("select * from Users where email='$email' AND username='$username'");
$result = mysqli_query($connection,$query);
$numResults = mysqli_num_rows($result);
if($password1 != $password2){
$errorPass = "Password yang anda masukkan tidak sama";
}
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
{
$errorEmail = "Invalid email address please type a valid email!!";
}
elseif($numResults>=1){
$errorName = "Username or email already exsist";
}
else{
mysql_query("insert into users(name,email,password) values('".$username."','".$email."','".md5($password1)."')");
header("location: login.php");
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login Form in PHP with Session</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="main">
<h1>Pendaftaran</h1>
<span><?php echo $error; ?></span>
<div id="login">
<form action="" method="post">
<label>UserName :</label>
<input id="name" name="username" placeholder="username" type="text"><span><?php echo $errorName; ?></span><br>
<label>Password :</label>
<input id="password1" name="password1" placeholder="**********" type="password"><span><?php echo $errorPass; ?></span><br>
<label>Ulangi Password :</label>
<input id="password2" name="password2" placeholder="**********" type="password"><span><?php echo $errorPass; ?></span><br>
<label>Email :</label>
<input id="email" name="email" placeholder="yourname@email.com" type="email"><span><?php echo $errorEmail; ?></span><br>
<input name="submit" type="submit" value=" Submit ">
</form>
</div>
</div>
最佳答案
首先检查您正在与 mysql 连接的连接,并使用 mysqli 选择您的数据库,这会产生问题,而且您正在使用 mysqli 执行查询,因此您无法从那里获得正确的结果 用户 mysql 用于选择数据库并执行查询。
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = "select * from Users where email='$email' AND username='$username";
mysql_select_db('TugasPPW');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
print_r($row);
}
echo "Fetched data successfully\n";
mysql_close($conn);
if($password1 != $password2){
$errorPass = "Password yang anda masukkan tidak sama";
}
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
{
$errorEmail = "Invalid email address please type a valid email!!";
}
关于php - 如何用php和mysql制作注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26908537/