首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql php使用逗号分隔值插入多个行

mysql php使用逗号分隔值插入多个行
EN

Stack Overflow用户
提问于 2013-01-31 08:18:36
回答 5查看 2.7K关注 0票数 0

我有一个html页面,我从复选框中收集了一组值,并将其插入到数据库中。html页面发布到PHP页面,PHP页面收集数据,然后存储在数据库中。

对于每个值,我希望包括一些其他字段,这些字段对于所有值都是相同的,例如输入的时间。我可以使用implode轻松地将捕获的数组转换为逗号分隔的列表。我使用这样一个逗号分隔的I列表来更新和删除记录。但是,当我想要插入它们时,MYSQL似乎不允许您使用逗号分隔的列表。我的问题是,插入记录的最简单方法是什么,c逗号分隔列表中的每个值对应一条记录,而不使用循环。

html页面

代码语言:javascript
复制
<input type="checkbox" name="var[]" value=1>
<input type="checkbox" name="var{}" value=2>

PHP页面

代码语言:javascript
复制
$vars = $_POST['var'];

这给了我一个数组,我可以使用implode将其转换为逗号分隔的列表。

要删除,我可以去

代码语言:javascript
复制
$sql = "DELETE * from table WHERE id in '$vars'";

要更新,我可以去

代码语言:javascript
复制
$sql = "UPDATE table, WHERE id in '$vars'";

但是似乎没有对应的Insert。

以下是可行的方法:

代码语言:javascript
复制
$sql = "INSERT into table (var, timeentered) values (1,now()) (2,now())";

然而,这不是我获得数据的方式。我想要做的事情是

$sql = "INSERT into table (var,timeentered) values($vars), now()",当然这是行不通的。

我必须将我的逗号分隔的列表转换成类似(1,now) (2,now())的形式来插入,还是有其他选择?

谢谢你的建议。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-31 08:26:18

不幸的是,您必须自己构建整个查询:

代码语言:javascript
复制
$sql ="insert into table (var, timeentered) values ";
$sql .= "(".implode(", now()), (", $vars).")";
票数 1
EN

Stack Overflow用户

发布于 2013-01-31 08:24:23

我能想到两个选择。

按照您的建议构建一个动态插入查询。但是,不要每次都调用now(),只需插入一个日期(即

代码语言:javascript
复制
$time = gmdate();
$sql = "INSERT into table (var, timeentered) values (1,$time) (2,$time)";

或者使用下面单个insert的预准备语句,关闭自动提交,启动事务并在for循环中执行所需插入次数的预准备语句,然后提交事务。

$sql = "INSERT into table (var, timeentered) values (?,?)"

票数 0
EN

Stack Overflow用户

发布于 2013-01-31 08:27:13

您需要遍历数据集并手动创建多行插入查询。如果要使用单个查询插入多行,则没有其他替代方法。这是在使用某些DB框架之外,这些框架可能会提供更好的接口来实现这一点。当然,归根结底,这样的DB框架本质上是在某个时刻手动构建多项插入查询。

这个问题可能会出现在你要插入多少个项目中的一个。如果您只打算一次插入几条记录,那么您可能希望考虑只对单独的插入使用预准备语句。但是,如果您打算一次插入数百条记录,这可能不是一个好主意。

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

https://stackoverflow.com/questions/14616363

复制
相关文章

相似问题

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