首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一次更新多行。基于id

一次更新多行。基于id
EN

Stack Overflow用户
提问于 2013-07-23 02:21:04
回答 3查看 894关注 0票数 2

我有一个变量,$ids它是一个分隔的字符串,所以它可以是$ids = "1“或$ids = "1,3,7,8”

我想要做的是根据这些值更新数据库,这样我就有了:

代码语言:javascript
运行
复制
   $query = "UPDATE Fields SET Value = '1'   WHERE Id IN '$ids'";

还有:

代码语言:javascript
运行
复制
   $query = "UPDATE Fields SET Value = '1'   WHERE Id '$ids'";

更新数据库的最好方法是什么?我应该将字符串拆分为数组,然后执行for each循环吗?还是有更好的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-23 02:23:22

保留它对SQL注入开放的事实,下面这行对一个或多个id执行

代码语言:javascript
运行
复制
$query = "UPDATE Fields SET Value = '1'   WHERE Id IN ($ids)";

代码语言:javascript
运行
复制
$query = "UPDATE Fields SET Value = '1'   WHERE Id = :Id";
票数 3
EN

Stack Overflow用户

发布于 2013-07-23 02:25:11

在这里使用IN子句本身并没有什么错误。任何WHERE子句都适用于UPDATE语句。您只需要将数字视为一个值列表,而不是一个字符串。如下所示:

代码语言:javascript
运行
复制
$query = "UPDATE Fields SET Value = '1' WHERE Id IN ($ids)";

真正重要的部分是如何将$ids值放在第一位。您没有在问题中显示这一点,但您需要确保您自己不会受到SQL注入漏洞的影响。确保您正确地清理输入并使用准备好的语句。准备好的语句如何处理值列表与单个值,取决于所使用的数据访问技术。

票数 2
EN

Stack Overflow用户

发布于 2013-07-23 02:24:59

使用以下查询:

代码语言:javascript
运行
复制
$query = "UPDATE Fields SET Value = '1' WHERE Id IN ($ids)";

其中$ids的格式应该是als 1,2,3,4。在执行之前不要忘记检查它们(SQL注入)。

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

https://stackoverflow.com/questions/17794618

复制
相关文章

相似问题

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