@ArtemIk15

Как исправить GET запрос?

При отправке номера, к примеру 00101, выводит что ничего не найдено, несмотря на то, что такая строка есть. GET запрос при этом выглядит так: https://домен/checkloto-result?search=00101
Но если использовать автозаполнение формы, то всё находится. При этом GET запрос выглядит так:
https://домен/checkloto-result?search=%E2%81%A000101
Подскажите пожалуйста, в чём может быть причина и как это исправить?

<form action="checkloto-result" method="GET">
    Номер билета:  <input name="search" value="" type="text" required><br/>
    <input class="noselect button blue settings-button" type="submit" value="Проверить">
</form>


$servername = "localhost"; // Адрес сервера
      $username = "***"; // Имя пользователя
      $password = "***"; // Пароль
      $BDname = "***"; // Название БД
      // Подключение к БД
      $mysqli = new mysqli($servername, $username, $password, $BDname); 
      // Проверка на ошибку
      if ($mysqli->connect_error) {
          printf("Соединение не удалось: %s\n", $mysqli->connect_error);
          exit();
      }
      // Получаем запрос
      $inputSearch = $_REQUEST['search']; 
      // Создаём SQL запрос
      $sql = "SELECT * FROM `lottery_bilet` WHERE `trz` = '$inputSearch' || `bilet` = '$inputSearch' || `win` = '$inputSearch' || `date` = '$inputSearch'";
      // Отправляем SQL запрос
      $result = $mysqli -> query($sql);
      function doesItExist(array $arr) {
    // Создаём новый массив
    $data = array(
        'trz' => $arr['trz'] != false ? $arr['trz'] : 'Нет данных',
        'bilet' => $arr['bilet'] != false ? $arr['bilet'] : 'Нет данных',
        'win' => $arr['win'] != false ? $arr['bilet'] : 'Нет данных',
        'date' => $arr['date'] != false ? $arr['bilet'] : 'Нет данных',
    );
    return $data; // Возвращаем этот массив
}
      function countPeople($result) { 
    // Проверка на то, что строк больше нуля
    if ($result -> num_rows > 0) {
        // Цикл для вывода данных
        while ($row = $result -> fetch_assoc()) {
            // Получаем массив с строками которые нужно выводить
            $arr = doesItExist($row);
            // Вывод данных
            echo "Тираж: ". $row['trz'] ."<br>
                  Билет: ". $row['bilet'] ."<br>
                  Выигрыш: ". $row['win'] ."<br>
                  Дата проведения тиража: ". $row['date'] ."<br>";
        }
    // Если данных нет
    } else {
        echo "Билет не найден в базе данных!";
    }
}
?>
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
@ArtemIk15 Автор вопроса
Дело оказалось в базе данных. В самом коде всё было норм. Вопрос решён
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@MrCheatEugene
Человек. Учусь кодить.
Попробуй пропускать входные строки из формы через функцию mysqli_escape_string.
Не знаю, поможет ли это но в будущем всегда при заносе любых данных в запрос MySQL их нужно экранировать этой функцией. Так и ошибок вероятно не будет, и такая штука как SQL-иньекция будет не страшна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы