[英]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.