所以,我试图根据数据库验证用户在html表单中输入的用户名和电子邮件是否正确
我有一个名为testing的数据库和一个名为info的表,它有两个字段: 姓名和电子邮件。
这是代码
<html>
<body>
<form action="conn.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname="testing";
$name=$_POST['name'];
$mail=$_POST['email'];
// Create connection
$conn1 = new mysqli($servername, $username, $password, $dbname);
$query='select email from info where name= "$name"';
$results = mysqli_query($conn1,$query);
$row= mysqli_fetch_assoc($results);
echo $row["email"];
$email=$row["email"];
if($mail==$email){
echo " correct values";
}
else
echo " incorrect";
//echo $name, $email;
// Check connection
//if ($conn1->connect_error) {
// die("Connection failed: " . $conn1->connect_error);
//}
//echo "Connected successfully";
$conn1->close();
?>
但结果总是不正确。我在文本框中输入的值与数据库中的值匹配。
答案 0 :(得分:1)
minnor问题是单引号/双引号。更新此行
$query='select email from info where name= "$name"';
带
$query="select email from info where name= '$name'";
问候:)
答案 1 :(得分:0)
你应该使用占位符,代码将是这样的:
$query = 'SELECT emal FROM info WHERE name = ?';
$stmt = mysqli_stmt_prepare($conn1, $query);
mysqli_stmt_bind_params($stmt, 's', $name);
$results = mysqli_stmt_execute($stmt);`
为了更好的可读代码,请阅读面向对象的mysqli接口,或者更好地使用PDO。
答案 2 :(得分:0)
或者你可以使用像
这样的字符串连接更新此行
$query='select email from info where name= "$name"';
带
$query='select email from info where name= "'.$name.'" ';
或
$query="select email from info where name= '".$name."' ";