【发布时间】:2015-06-25 09:48:28
【问题描述】:
我正在尝试根据输入值向数据库中添加行。 即如果输入为“5”,查询将向数据库插入 5 行。 (这部分工作正常)
现在,我需要将 bed_number 比现有的 max(bed_number) +1,但我似乎无法让它工作。
如果现有的 max(bed_number) 返回 5,则查询应添加“6、7、8、9、10 等”作为 5 个条目的 bed_number。
如果现有的 max(bed_number) 返回 null,则应添加“1,2,3,4,5 等”
现在,无论最大计数如何,结果总是返回 1,2,3,4,5...。
我现在拥有的是:
global $conn;
if ($values["number_of_bed"])
{
$add1 = $values["number_of_bed"]+1;
$existingBed = "select Max(bed_number) from bed where bed =" '".$i."'" +1;
for ($i=1;$i<$add1;$i++)
{
$strInsert = "insert into bed (unit_id,bed_number) values ('".$values["unit_id"]."','".$existingBed."')";
db_exec($strInsert,$conn);
}
header("Location: bed_list.php");
// Exit and Redirect to the list page after updating database
exit();
【问题讨论】:
-
对不起,这是 php 5.3.13 / mysql 5.5.24
-
真的是代码吗?因为,对我来说它看起来像语法错误。
-
你需要在
MAX()上+1 ->SELECT MAX(bed_number)+1 FROM bed WHERE bed = $i -
另外,在
VALUES中执行SELECT时,不要使用VALUES并用括号括起来()。 dev.mysql.com/doc/refman/5.1/en/insert-select.html 应该更像INSERT INTO bed (unit_id, bed_number) SELECT '$values["unit_id"]', MAX(bed_number)+1 FROM bed WHERE bed = $1 -
为什么不让
bed_number自动递增然后你就不用担心了?