gpt4 book ai didi

php - foreach $_POST 更新取决于 $key

转载 作者:行者123 更新时间:2023-11-29 00:18:19 26 4
gpt4 key购买 nike

我正在尝试使用 foreach 循环更新我的数据库。每次循环运行时,需要更改两行,但是数据库会用相同的数据更新这两行。我的表单 php 代码是:

<input name="poles<?php echo $curtains['room_curtains_id']; ?>" type="radio" class="calc" id="<?php echo $poles['curtains_poles_id']; ?>" value="<?php echo $poles['curtains_poles_price']; ?>,<?php echo $poles['curtains_poles_id']; ?>">
<input name="pleats<?php echo $curtains['room_curtains_id']; ?>" type="radio" class="calc" id="<?php echo $pleats['curtains_pleats_id']; ?>" value="<?php echo $pleats['curtains_pleats_price']; ?>,<?php echo $pleats['curtains_pleats_id']; ?>">

发帖时,我的返回是:

Array
(
[poles1] => 0.00,1
[pleats1] => 40.00,2
[poles2] => 120.00,2
[pleats2] => 0.00,1
[poles3] => 150.00,3
[pleats3] => 40.00,2
)

现在,当涉及到更新数据库时,我使用以下代码:

foreach ($_POST as $key => $value) {
$new_value = explode(",", $value);

if (strpos($key, 'poles')!==false) {

$result = mysql_query("UPDATE basket SET product_id = '".mysql_real_escape_string($new_value[1])."', line_price= '".mysql_real_escape_string($new_value[0])."' WHERE session_id = '$session_id' AND plot_id = '".mysql_real_escape_string($plot_id)."' AND product_type='Poles' AND rooms_curtains_id='".mysql_real_escape_string($key)."'");

}

if (strpos($key, 'pleats')!==false) {

$result2 = mysql_query("UPDATE basket SET product_id = '".mysql_real_escape_string($new_value[1])."', line_price= '".mysql_real_escape_string($new_value[0])."' WHERE session_id = '$session_id' AND plot_id = '".mysql_real_escape_string($plot_id)."' AND product_type='Pleats' AND rooms_curtains_id='".mysql_real_escape_string($key)."'");
}

}
  • 请注意,这两个查询的唯一区别是 product_type .

当我运行它时,数据库会针对 product_type='Poles' ($result) 正确更新但对于 product_type='Pleats' ($result2) 具有相同的信息,它应该使用键更新 pleats1 , pleats2 , pleats3 .

最佳答案

您处理了 MySQL 结果集的条件,但您从未处理过 PHP 代码中的条件。当您指定具有值 Pleats 的列时,您希望 MySQL 能够神奇地理解,以便在您的 foreach() 循环中搜索 %pleats%,但是它永远不会发生,因为那是两件不同的事情。

mysql 查询的执行次数与循环中的迭代次数相同。在您的情况下 - 每个 $key 都会执行 6 次查询。

如果你想用包含 pleats$key 更新包含 product_type='Pleats' 的行,你应该告诉PHP 如此。它不再是 MySQL 级别。

foreach ($_POST as $key => $value) {
$new_value = explode(",", $value);

$result = mysql_query("UPDATE basket SET product_id = '".mysql_real_escape_string($new_value[1])."', line_price= '".mysql_real_escape_string($new_value[0])."' WHERE session_id = '$session_id' AND plot_id = '".mysql_real_escape_string($plot_id)."' AND product_type='Poles' AND rooms_curtains_id='".mysql_real_escape_string($key)."'");

if (strpos($key, 'pleats')!==false) {
$result2 = mysql_query("UPDATE basket SET product_id = '".mysql_real_escape_string($new_value[1])."', line_price= '".mysql_real_escape_string($new_value[0])."' WHERE session_id = '$session_id' AND plot_id = '".mysql_real_escape_string($plot_id)."' AND product_type='Pleats' AND rooms_curtains_id='".mysql_real_escape_string($key)."'");
}
}

关于php - foreach $_POST 更新取决于 $key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22039513/

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