gpt4 book ai didi

PHP 和 SQL - 更新查询无法更新值

转载 作者:行者123 更新时间:2023-11-29 20:10:54 25 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的库存管理系统。我能够显示表“部分”中的所有项目,并且在文本框中显示金额。但是,当我将文本框中的值从 0 更改为 5 并按下提交按钮时,它不会更新库存。

下面是我的代码,我在更新查询方面没有太多经验,但显然我在 php.net 上读过相关内容。

                      <?php
echo "<table width=\"800\" class=\"nieuws\">";
$db=mysqli_connect("localhost","root","","lichtwinkel");
$p=mysqli_query($db, "SELECT * FROM parts WHERE product LIKE 1");

echo "<form method='post' action=''>";
echo "<tr><th></th><th>Onderdeel nummer</th><th>Eigenschappen</th><th>Prijs</th><th>Voorraad</th></tr>";

while ($row = mysqli_fetch_array($p)){
echo "<tr>";
echo "<td><img class='lamp' src='../css/images/".trim($row['partnr']).".png' alt='Geen afbeelding beschikbaar'></td>";
echo "<td>".$row['partnr']."</td>";
echo "<td>".$row['specs']."</td>";
echo "<td>&euro; ".$row['price']."</td>";
echo "<td><input type='text' id='aantal' name='aantal' value=$row[voorraad] /></td>";
echo "<td><input type='submit' id='update' name='update' value='Update' /></td>";
echo "</tr>";
}
echo "</table>";

if(isset($_POST['aantal']) && $_POST['update']) {
$y = $_POST['aantal'];
$p=mysqli_query($db, "UPDATE parts SET voorraad = '$y' WHERE partnr = $row[0]");
}

echo "</form>"
?>

简单地说,我想要实现的目标如下:每当我更改文本框中显示的值并按下提交按钮时,我希望它更新数据库中的值。

有人知道我做错了什么吗?有任何想法吗?我应该阅读的文章?所有帮助将不胜感激。

谢谢。

最佳答案

据我所知,你根本就做错了。

首先,您不能在多个 td 元素中使用表单标签。

您没有关闭表单标签,只是在结束时关闭。 (因此,如果循环 6 次,您将打开 6 个表单,但其中一个已结束!)。

更新时,您选择行[0] - 它位于行循环之外?

即使更新,也会再次显示错误的结果。更新应该在上面选择!因此它会获取新更新的值。

要做什么:

  1. 首先为所有更新制作一张表格。
  2. 使用提交按钮获取 DATABASE_ID 值。
  3. 将“aantal”的名称设为“aantalDATABASE_ID”。
  4. 提交时检查 $_POST['update'],并使用它的值 (DATABASE_ID) 获取输入 $_POST["aantal".$_POST['update']]。
  5. 请更新,您已拥有所需的一切。

示例:

<?php
echo "<form method='post' action=''>";
echo "<table width=\"800\" class=\"nieuws\">"
$db=mysqli_connect("localhost","root","","lichtwinkel");

if(isset($_POST['update']) && !empty($_POST['update'])) {
$y = $_POST['aantal'.$_POST['update']];
$p=mysqli_query($db, "UPDATE parts SET voorraad = '".$y."' WHERE partnr = '".$_POST['update']."'");
}

$p=mysqli_query($db, "SELECT * FROM parts WHERE product LIKE 1");
echo "<tr><th></th><th>Onderdeel nummer</th><th>Eigenschappen</th><th>Prijs</th><th>Voorraad</th></tr>";
while ($row = mysqli_fetch_array($p)){
echo "<tr>";
echo "<td><img class='lamp' src='../css/images/".trim($row['partnr']).".png' alt='Geen afbeelding beschikbaar'></td>";
echo "<td>".$row['partnr']."</td>";
echo "<td>".$row['specs']."</td>";
echo "<td>&euro; ".$row['price']."</td>";
echo "<td><input type='text' id='aantal' name='aantal".$row[0]."' value='".$row[voorraad]."' /></td>";
echo "<td><input type='submit' id='update' name='update' value='".$row[0]."' /></td>";
echo "</tr>";
}
echo "</table>";
echo '</form>';
?>

毕竟,要小心 SQL 注入(inject)。 “aantal”值是用户输入。因为提交值可以更改。

关于PHP 和 SQL - 更新查询无法更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40128637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com