Я пытаюсь выполнить поиск в базе данных и посмотреть, соответствует ли она записи пользователей. Однако с моим кодом до сих пор я просто продолжаю получать "Студент не существует", когда я ввожу имя и номер студента, которые находятся в базе данных, и когда я ввожу имя и номер, которых не существует, он ничего не отображает. Я новичок в 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>
next.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>
Ваш HTML
кажется Ok, хотя в примере отсутствует закрывающий </form>
.
Теперь на PHP
. Я исправил некоторые ошибки. Вот код:
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 if name and number entered by user equals what is in database
$sfound =0;
while ($srow = mysqli_fetch_assoc($sresult))
{
if ($name == $srow['student'] && $number == $srow['uid']) echo $srow['uid'].' '.$srow[student];
else
{
echo "Student doesn't exist";
$sfound =1;
} // end of if ($name == $srow['student'] && $number == $srow['uid'])
} // end of while ($srow = mysqli_fetch_array($sresult))
mysqli_close ($link);
?>
Вам нужно проверить результаты, полученные из mysqli_real_escape_string
они, вероятно, являются нулевыми. Возможно, это причина, по которой ваши запросы к базе данных извлекают 0 строк. Если ваше соединение $link
пуст, это должно быть причиной на первом месте.
mysqli_fetch_array
умолчанию имеет значение MYSQLI_BOTH , поэтому результаты могут использоваться по индексу строки и / или имени столбца.