我正在尝试搜索数据库并查看它是否与用户条目匹配。然而,到目前为止,在我的代码中,当我输入数据库中的学生姓名和编号时,我只是不断收到“学生不存在”的信息,而当我输入不存在的姓名和编号时,它什么也不显示。我是 PHP 和 mysql 的新手,如果有人能帮助我并解释为什么我的代码不起作用,我将不胜感激。我的表格位于单独的页面上。在这里,我要求用户输入他们的名字,只是为了表明我输入的是正确的 $_POST。我只是测试回显名称和号码以确保代码正常工作......此时就是这样。
<form action="next.php" method="post">
Name: <input type="text" name="name" placeholder="Name" required="required" maxlength="50">
<br><br>
Student Number: <input type="text" name= "snumber" required="required" maxlength="9">
<br><br>
下一个.php
<?php
require 'connect.php';
//linking up to the database
$link = mysqli_connect(HOST, USER, PASS, DB) or die (mysqli_connect_error());
//making a variable from the user data
$name = mysqli_real_escape_string ($link, $_POST["name"]);
$number = mysqli_real_escape_string ($link, $_POST["snumber"]);
$course = $_POST["pcourse"];
// select all from table student which show student name and number
$squery = "SELECT * FROM students WHERE uid='$number' AND student = '$name'";
$sresult = mysqli_query($link, $squery);
// check is name and number entered by user equals what is in database
$sfound =0;
while ($srow = mysqli_fetch_array($sresult)) {
if ($name == $srow['uid'] && $number == $srow['student']) {
echo "$srow[uid] $srow[student]";
} else{
echo "Student doesn't exist";
$sfound =1;
} // end of if ($name == $srow['uid'] && $number == $srow['student'])
} // end of while ($srow = mysqli_fetch_array($sresult))
mysqli_close ($link);
?>
<html>
<body>
<form action="index.php" method="post">
<br>
<input type = "submit" value="back" name="back">
</form>
</body>
</html>
最佳答案
您需要检查 mysqli_real_escape_string
生成的结果,它们可能为空。这可能就是您的数据库查询检索 0 行的原因。如果您的连接 $link
也为空,这应该是首要原因。
关于php - 搜索数据库以匹配用户输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47851792/