首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在一个查询中更新多行(使用for循环)

如何在一个查询中更新多行(使用for循环)
EN

Stack Overflow用户
提问于 2016-04-15 02:24:09
回答 2查看 11.2K关注 0票数 5

例如,我的表上有两个数据:

商业、商业等行业

自愿的,高的

无偿的2

当我更新一个值(例如:将"Bob“更改为"George")时,它会更改所有值。其结果是:

商业、商业等行业

工业,工业

工业,工业,工业

如何在一个查询中更新多个行?要收集值,我使用如下for循环:

代码语言:javascript
运行
复制
<?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'");
}
...
?>

你能帮帮我吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-15 05:51:24

在循环中构造查询:

代码语言:javascript
运行
复制
<?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);
}
...
?>

希望这能帮上忙!

票数 3
EN

Stack Overflow用户

发布于 2016-04-15 02:39:18

回答你的问题

MySQL更新与WHERE子句匹配的所有行,因此要更新具有相同值的多行,应使用匹配所有行的条件。若要更新所有行,请不要设置where子句。若要使用不同的值更新多个行,则不能使用多个查询。

对您的问题的回答

在您的代码中,$id、$name和$age是数组,因此您不能在字符串中使用它,这将无法工作。您应该在FOR循环中进行更新。我建议您尽量尊重面向资源的原则,即所有属性都分配给它们的项(包括关联数组或对象)。如果不检查结果,可以使用分号在一次中执行所有查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36637234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档