0
我有一个INSERT循环,我需要给它添加一个参考数字。我需要循环中的所有参考数字都是相同的。我知道用MAX()我可以选择表中最高的数字。但是,如果我循环它会增加每个循环,而我需要它保持不变。多次循环中的最大值数
有没有在查询本身做到这一点的方法?或者是将其保存在循环外的变量中的唯一方法?
示例代码:
for($i=2;$i<=$row_count;$i++){ // Loops 3 times (example)
$part = $vehicle.'_part'.$i;
$description = $vehicle.'_description'.$i;
$imageName = $vehicle.'_image'.$i;
$parts[] = array(
'part' => $_SESSION[$part],
'image' => $_SESSION[$part],
'description' => $_SESSION[$description]);
}
foreach($parts as $onePart){
$queries[] = "INSERT INTO searches_tbl (ref_nr, vozila_id, korisnici_id, part, description, image)
VALUES (???, (SELECT id FROM vozila_tbl ORDER BY id DESC LIMIT 1),
(SELECT id FROM korisnici_tbl WHERE email = '".$email_address."' ORDER BY id DESC LIMIT 1), '".$onePart['part']."', '".$onePart['description']."', '".$onePart['image']."')";
}
是要添加任意此参考号码?为什么不直接执行INSERt ...(reference_column,...其他列)VALUES(123,(SELECt ...))? – Trent 2013-03-07 19:12:24
它需要每次增加一个。但不在循环内。所以如果它循环3次,表中最高的数字是100,那么它需要全部3次。 – 2013-03-07 19:15:22
因此,检索循环外的最大值。虽然这会给你带来并发性问题。要做到这一点,唯一的方法就是将所有这些变成一个包装在一个事务中的查询。 – Stu 2013-03-07 19:19:04