例如,我的表上有两个数据:
商业、商业等行业
自愿的,高的
无偿的2
当我更新一个值(例如:将"Bob“更改为"George")时,它会更改所有值。其结果是:
商业、商业等行业
工业,工业
工业,工业,工业
如何在一个查询中更新多个行?要收集值,我使用如下for循环:
<?php
...
$id_array = $_POST['id'];
$name_array = $_POST['name'];
$age_array = $_POST['age'];
$id = array();
$name = array();
$age = array();
for ($i = 0; $i < count($id_array); $i++) {
//count($id_array) --> if I input 4 fields, count($id_array) = 4)
$id[] = mysql_real_escape_string($id_array[$i]);
$name[] = mysql_real_escape_string($name_array[$i]);
$age[] = mysql_real_escape_string($age_array[$i]);
}
mysql_query("UPDATE member SET name = '$name', age = '$age' WHERE id = '$id'");
}
...
?>
你能帮帮我吗?谢谢。
发布于 2016-04-15 05:51:24
在循环中构造查询:
<?php
...
$id_array = $_POST['id'];
$name_array = $_POST['name'];
$age_array = $_POST['age'];
for ($i = 0; $i < count($id_array); $i++) {
//count($id_array) --> if I input 4 fields, count($id_array) = 4)
$id = mysql_real_escape_string($id_array[$i]);
$name = mysql_real_escape_string($name_array[$i]);
$age = mysql_real_escape_string($age_array[$i]);
$query .= "UPDATE member SET name = '$name', age = '$age' WHERE id = '$id';";
}
mysql_query($query);
}
...
?>
希望这能帮上忙!
发布于 2016-04-15 02:39:18
回答你的问题
MySQL更新与WHERE子句匹配的所有行,因此要更新具有相同值的多行,应使用匹配所有行的条件。若要更新所有行,请不要设置where子句。若要使用不同的值更新多个行,则不能使用多个查询。
对您的问题的回答
在您的代码中,$id、$name和$age是数组,因此您不能在字符串中使用它,这将无法工作。您应该在FOR循环中进行更新。我建议您尽量尊重面向资源的原则,即所有属性都分配给它们的项(包括关联数组或对象)。如果不检查结果,可以使用分号在一次中执行所有查询。
https://stackoverflow.com/questions/36637234
复制相似问题