我有一个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']."')";
}
答案 0 :(得分:1)
您可以使用AUTO_INCREMENT主键列创建一个新表,即searches_ref
。
CREATE TABLE
searches_ref
(id
INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
然后在循环之前在searches_ref
中插入一个新行,并获得一个可以在循环中使用的新ID。
这样,你不应该遇到并发问题(你可能会使用MAX()
)