我试图弄清楚如何用数组更新mysql表。
该表有3个字段:id,rate,pol_id。 “插入”非常有效:
foreach ($rates as $rn=>$rv) {
$sql3=mysql_query("INSERT into `rates` (`rate`, `pol_id`)
values ( '$rv', '$polid',)") or die ("Unable to issue query sql2: ".mysql_error()); }
$ rates实际上来自动态输入字段。
所以我得到类似这样的例子:
id | rate | pol_id
=========================
1 | 5.6 | 272
2 | 6.3 | 272
3 | 7.9 | 272
现在我想编辑输入字段中的值 所以我需要更新表格:
我试过这个:
foreach ($rates as $rn=>$rv) {
$sql3=mysql_query("UPDATE `rates` SET `rate`='$rv' WHERE `pol_id`='$polid'")or die ("Unable to issue query sql3: ".mysql_error()); }
但这不起作用,它会使用最后一个值更新所有行。
ypu请帮帮我吗?
答案 0 :(得分:3)
你的$ polid变量在foreach循环中没有被改变。对于rates
表中具有相同pol_id(在$ polid中指定)的所有元素,这会导致where语句为 true 。这会将“所有”条目(使用pol_id = $ polid)的值设置为刚刚输入的最后一个值($ rv)。
如果您知道rate的旧值如下所示,您可以尝试在where语句中添加第二个条件:
$sql3=mysql_query("UPDATE `rates` SET `rate`='$rv' WHERE `pol_id`='$polid' AND `rate`={old_value}")or die ("Unable to issue query sql3: ".mysql_error()); }
更好的方法是使用费率的id列(因为它保证是唯一的),首先执行查询以检索所需条目的ID,然后在更新查询中使用该ID。
$query1 = mysql_query("select id from rates where {your desired condition};
/* Assign the result of $query1 to $id */
$sql3=mysql_query("UPDATE `rates` SET `rate`='$rv' WHERE `pol_id`='$polid' AND `id` = $id)or die ("Unable to issue query sql3: ".mysql_error()); }
你甚至可以让pol_id
='$ polid'现在不在查询中,因为id是唯一的。
答案 1 :(得分:1)
您使用密钥$ rn和值$ rv。
循环$ rate$ polid在循环期间保持不变,因此每次更新都会影响相同的行/行。