проблемы с поиском в базе данных, чтобы соответствовать вводу пользователя

0

Я пытаюсь выполнить поиск в базе данных и посмотреть, соответствует ли она записи пользователей. Однако с моим кодом до сих пор я просто продолжаю получать "Студент не существует", когда я ввожу имя и номер студента, которые находятся в базе данных, и когда я ввожу имя и номер, которых не существует, он ничего не отображает. Я новичок в 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>
Теги:
database

2 ответа

0

Ваш 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);
?>
  • 1
    Знайте, что mysqli_fetch_array умолчанию имеет значение MYSQLI_BOTH , поэтому результаты могут использоваться по индексу строки и / или имени столбца.
  • 0
    Ты прав. Мне нужно стереть эту строку. Спасибо, голосование за помощь.
Показать ещё 4 комментария
0

Вам нужно проверить результаты, полученные из mysqli_real_escape_string они, вероятно, являются нулевыми. Возможно, это причина, по которой ваши запросы к базе данных извлекают 0 строк. Если ваше соединение $link пуст, это должно быть причиной на первом месте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню