gpt4 book ai didi

php - 在没有 PATCH 的情况下使用 php 更新多个现有行?

转载 作者:搜寻专家 更新时间:2023-10-30 20:52:17 25 4
gpt4 key购买 nike

目前我对 php 还很陌生,但需要一些简单的程序。我创建了一个小网站,可以存储一些数据(产品名称、产品数量和产品价格)

我将它作为一个表调用回来,在每个表行中都有一个包含数据的输入(文本)字段。

我需要这些数据是可编辑的,并且只需按一下按钮即可保存所有数据,但我就是无法让它工作...;(

这是我当前的代码:

$products_array = array("");
$amounts_array = array("");
$prices_array = array("");
$id_array = array("");

<form method="POST" name="update">
<?php
foreach($object as $objects){
array_push($products_array, $objects['product']);
array_push($amounts_array, $objects['amount']);
array_push($prices_array, $objects['price']);
array_push($id_array, $objects['id']);

echo "<tr>
<td><input type='text' name='".$objects['id']."' value='". $objects['product'] ."'></td>
<td><input type='text' name='".$objects['id']."' value='". $objects['amount'] ."'></td>
<td><input type='text' name='".$objects['id']."' value='". $objects['price'] ."'></td>
</tr>";
}
?>
<input type="submit" value="Opslaan">
</form>

这会在文本字段中接收数据库中的所有行,并将它们的数据存储在一个数组中。

这是我尝试更新它的方式:

<?php
if(isset($_POST['update'])){
for($i = 1; $i <= $count; $i++){
$sql = 'UPDATE objects SET product = "$products_array[$i]", amount = "$amounts_array[$i]", price = "$prices_array[$i]" WHERE id = "$id_array[$i]" ';
$sql = $conn->query($sql);
}
unset($_POST);
header('Location: index.php');
}
?>

有人知道如何解决这个问题或有更好的方法吗?

提前致谢^_^

最佳答案

您需要通过 ID 唯一标识每个产品详细信息,即名称、数量和价格,以执行更新操作。所以解决方案应该是这样的:

  • 无需为产品的每个属性声明单独的数组,只需$object。数组足以解决这个问题。
  • 你的 <form>应该是这样的:(仔细观察 <input> 元素)

    <form method="POST">
    <table>
    <?php
    foreach($object as $objects){
    ?>
    <tr>
    <td><input type="text" name="objects[<?php echo $objects['id']; ?>][product]" value="<?php echo $objects['product']; ?>" /></td>
    <td><input type="text" name="objects[<?php echo $objects['id']; ?>][amount]" value="<?php echo $objects['amount']; ?>" /></td>
    <td><input type="text" name="objects[<?php echo $objects['id']; ?>][price]" value="<?php echo $objects['price']; ?>" /></td>
    </tr>
    <?php
    }
    ?>
    </table>
    <input type="submit" name="update" value="Opslaan">
    </form>
  • 这就是您如何处理表单以执行 UPDATE操作。

    if(isset($_POST['update'])){
    foreach($_POST['objects'] as $id => $products_array){
    $sql = "UPDATE objects SET product = '" . $products_array['product'] . "', amount = '" . $products_array['amount'] . "', price = '" . $products_array['price'] . "' WHERE id = '" . $id . "'";
    $sql = $conn->query($sql);
    }

    // your code

    }

旁注:

  1. 如果你想看$_POST['objects']的完整结构, 做 var_dump($_POST['objects']);
  2. 您的查询容易受到 SQL injection 的影响.始终准备绑定(bind)执行 您的查询以防止任何类型的 SQL 注入(inject)。这是关于 how to prevent SQL injection in PHP 的一个很好的 SO Q/A .

关于php - 在没有 PATCH 的情况下使用 php 更新多个现有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38133480/

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