小白问题:提交一组数据并插入数据库
发布于:2022-01-17 09:50:54
#1 prince
脑子突然不转弯了(手册看了也转不了{:soso_e127:}),求思路求解答!!!
表结构:
CREATE TABLE IF NOT EXISTS `mbt_column` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`rowType` varchar(1) NOT NULL DEFAULT '0',
`name` varchar(54) NOT NULL,
`attachRow` varchar(8) DEFAULT NULL,
`articleId` int(8) DEFAULT NULL,
`winer` int(2) NOT NULL DEFAULT '0',
`PostDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
提交一组articleId上来,如下:
Array( [0] => 321 [1] => 320 [2] => 319 ......)
插入记录时指定rowType,attachRow为2,5
怎么写的插入记录语句?
2013-07-08 15:16:19
#2 y_e_s_2011@163.
放在循环里面一条条插入啊
2013-07-08 20:25:34
#3 jake
用foreach + create
2013-07-09 08:55:40
#4 prince
我再找找别的方法,找到再来分享
2013-07-09 10:45:53
#5 蓝色天擎
循环不就行了吗, 还要找啥方法?
$ids = $this->spArgs("ids");
for($i=0;$i
$values = array(
'id' => $ids [$i],
'rowType' =>2,
'attachRow' => 5,
);
$Obj->create($values);
}
2013-07-09 11:10:42
#6 prince
我现在用的方法是把提交上来的数组处理成字符串,变成这样(3),(4),(5)
然后组装一句mysql语句:
INSERT INTO mbt_column(articleId) value ('321'),('320') ON DUPLICATE KEY UPDATE `rowType`=2, `attachRow`=6
执行后,前半部分是生效了,但是
ON DUPLICATE KEY UPDATE `rowType`=2, `attachRow`=6
这部分没有生效,新插入的记录rowTyp,attachRow都是默认值,不是我指定的值
2013-07-09 12:16:40
#7 大腰怪
你拼接一个insert语句的字符串看看可以么。
2013-07-09 12:45:09
#8 prince
大腰怪 发表于 2013-7-9 12:45
你拼接一个insert语句的字符串看看可以么。
那个articleId长度不是固定的,所以拼接不方便,如果不考虑数据库写优化的话我早用foreach了
2013-07-09 12:50:18
#9 蓝色天擎
INSERT INTO mbt_column(articleId,rowType,attachRow) values (321,2,6),(320,2,6) ON DUPLICATE KEY UPDATE `rowType`=2, `attachRow`=6
2013-07-09 12:59:17
#10 prince
大腰怪 发表于 2013-7-9 12:45
你拼接一个insert语句的字符串看看可以么。
参考了你的,把字段rowType和attachRow的值也拼进去了,把后半句ON去掉,之前是ON DUPLICATE KEY UPDATE 理解错了。
幻の羽翼
ON DUPLICATE KEY UPDATE 表示主键冲突的时候才update
确切的说是 唯一性冲突
谢谢各位帮忙,结帖
2013-07-09 13:11:11
#11 prince
foreach( $ids as $key ){
$idsvalue .= '(\'2\', '. $pClass . ',\'' . $key . '\'),';
}
$idsvalue = trim($idsvalue,',');
$sqlStr = "INSERT INTO mbt_column(`rowType`,`attachRow`,`articleId`) value " . $idsvalue ;
$obj_addCol -> runSql($sqlStr);
完整代码
2013-07-09 13:15:07
#12 蓝色天擎
前面以为你的articleId 是主键。。。。 还是用循环判断吧
2013-07-09 13:46:05