Сравнение пользовательских данных с mysql дБ - PullRequest
0 голосов
/ 08 января 2020

так что я недавно получил работу на рынке, и они получили много PLU, которые мне нужно знать. Поэтому, чтобы помочь мне, я пытаюсь сделать что-то, чтобы помочь мне.

Я создал базу данных с некоторыми элементами, которые выглядят так:

id art img plu_code

и в моем index. php, после подключения к базе данных и выбора случайного идентификатора для показа

$query = "SELECT * FROM produto ORDER BY RAND() LIMIT 1";

if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {
        $imagem_produto = $row["imagem"];
        $nome_produto = $row["artigo"];
        $plu_produto = $row["plu"];

        echo '<center><tr>
                  <td><img height="150" width="150" src="'.$imagem_produto.'"></td><br> 
                  <td>'.$nome_produto.'</td><br>
                  <td>'.$plu_produto.'</td>  
              </tr></center>';
    }
    $result->free();

    if ($plu_produto === $_GET['U']) {
        echo "Correct. Please wait!";
        header("Refresh:3");
    }else{
        echo 'Wrong.';
    }
}

?>

<html>
<body>
<form method="post">
<input type="text" name="U"/>
<input type="submit" />
 </form>
</body>

</html>

Как сравнить входные данные пользователя с БД, а затем показать, правильно ли это или нет? Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Вам нужно просто запросить указанный c PLU, а не всю таблицу.

Вам также необходимо использовать $_POST, а не $_GET, поскольку в форме method="POST". * 1006. *

if (isset($_POST['U'])) {
    $plu_produto = $_POST['U'];
    $stmt = $mysql->prepare("SELECT 1 FROM produto WHERE plu = ?");
    $stmt->bind_param("s", $plu_produto);
    $stmt->execute();
    $stmt->store_result();
    if ($stmt->num_rows > 0) {
        echo "Correct. Please wait!";
        header("Refresh:3");
    }else{
        echo 'Wrong.';
    }
    exit;
}
0 голосов
/ 08 января 2020

Это не , как при сравнении введенных пользователем данных с БД.

Ваш код

if ($_POST['U'] === $plu_produto) {

сравнивается с последней строкой, прочитанной в то время как l oop что не соответствует ожиданиям.

После подключения к базе данных, есть код для отображения всех данных, которые будут отображаться при первом запуске. И после пользовательского ввода вы должны выбрать соответствующие строки из самой базы данных, которые совпадают с "U" , где не должно быть ни одного, пока l oop, но сам выбор sql должен возвращать только одну строку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...