繁体   English   中英

将用户输入数据与 mysql db 进行比较

[英]Comparing user input data to mysql db

所以我最近在一个市场找到了一份工作,他们有很多我需要知道的 PLU。 所以为了帮助我,我正在尝试做一些事情来帮助我。

我创建了一个数据库,其中的一些项目如下所示:

id art img plu_code

并在我的 index.php 中,在连接到数据库并选择一个随机 ID 后显示

$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>

我如何将用户输入与数据库进行比较,然后显示它是正确还是错误? 谢谢!

不是像用户输入比较分贝。

你的代码

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

与 while 循环读取的最后一行进行比较,这与预期不同。

连接到数据库后,有代码来显示将在第一次运行时显示的所有数据。 在用户输入之后,您应该从数据库本身中选择与“U”匹配的相关行,其中不应该有任何 while 循环,但 sql select 本身应该只返回一行。

您应该只查询特定的 PLU,而不是整个表。

您还需要使用$_POST ,而不是$_GET ,因为表单具有method="POST"

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM