首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Foreach使用数组更新MySQL表

使用Foreach使用数组更新MySQL表
EN

Stack Overflow用户
提问于 2011-01-28 00:05:28
回答 3查看 8.3K关注 0票数 1

这让我快要上厕所了,请帮帮忙。

我正在尝试用数组更新Mysql表。

像这样的东西

代码语言:javascript
复制
$a = array('1', '2', '3');

foreach($a as $id){

mysql_query("UPDATE table SET id = '$id' WHERE column = 'something'") or die(mysql_error());

}

因此,在更新之后,id列应该具有值1、2、3,而不是更新为1、1、1

不完全是我想要的。

谁能告诉我我做错了什么。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-01-28 00:10:17

你在真实的代码中改变你的where-statement吗?现在,您正在覆盖每一行,其中column = 'something‘,这意味着每一行都将每次更新,并以相同的内容结束。

编辑:回答评论

为此,您需要一个非静态的WHERE-statement。你可以在我的帖子中做一些类似编辑的事情...

代码语言:javascript
复制
$a = array('1' => 'something1', '2' => 'something2', '3' => 'something3');

foreach($a as $id => $where){
    mysql_query("UPDATE table SET id = '$id' WHERE column = '$where'") or die(mysql_error());
}
票数 2
EN

Stack Overflow用户

发布于 2011-01-28 00:11:39

foreach中的每个update语句每次都作用于同一行或同一组行。在您的示例中,您使用"where column = 'something'“。如果这在foreach循环的每次迭代中都没有改变,那么您将不断更新相同的行。

票数 2
EN

Stack Overflow用户

发布于 2011-01-28 00:10:39

我没有看到“where”条件在循环中发生变化。每次执行"WHERE column = 'something'“时,它都会匹配并替换所有行,覆盖以前每次更新时的ID。

更新:

我们中的一些人在同一时间写了类似的回复。我应该在“添加”之前再点击一次“刷新”。

无论如何,如果这是获取表上的连续ids的一次性修复,那么您可以使用直接的mysql来实现:

代码语言:javascript
复制
mysql> select * from foo;
+------+------+
| id   | name |
+------+------+
|    0 | aaa  |
|    0 | bbb  |
|    0 | ccc  |
|    0 | ddd  |
+------+------+
4 rows in set (0.00 sec)

mysql> set @ct=0;
Query OK, 0 rows affected (0.00 sec)

mysql> update foo set id=(@ct:=@ct+1);
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from foo;
+------+------+
| id   | name |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|    4 | ddd  |
+------+------+
4 rows in set (0.00 sec)

如果愿意,可以使用“order by”,例如:

代码语言:javascript
复制
mysql> update foo set id=(@ct:=@ct+1) order by name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4818712

复制
相关文章

相似问题

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