我有一个嵌套在foreach语句中的MYSQL数据库查询,如下所示:
foreach ($_POST['articles'] as $article => $number) {
$sql_update2 = "INSERT INTO testmerrill.Device_Article_Connection (device_id, article_id)
VALUES ((MAX (device_id) FROM testmerrill.Devices),'{$_POST['articles'][$article]}))'";
query_db1($sql_update2);
}
上面的查询在此之后运行:
$sql_update1 = "INSERT INTO testmerrill.Devices (device_name, device_manufacturer)
VALUES ('{$device_name}', '{$device_manufacturer}')";
query_db1($sql_update1);
此页面是我正在编写的CRUD程序的创建页面。我在这里使用两个表:Devices和Device_Article_Connection。我想做的是将用户发布在提交时的多个select语句选项插入到Device_Article_Connection表中,以查询用户选择包含的与新“设备”相关联的尽可能多的选项。我知道我当前的解决方案可能不是一个很优雅的方法,但这就是我目前的位置。困难在于我不知道用户刚刚创建的新设备的ID,因此我需要将该ID与用户选择与其关联的文章进行关联。我正在尝试使用MAX函数查找设备ID(因为刚添加的用户的最后一个ID应该是最大的),但是我似乎无法正常工作,但是有些语法错误使我无法查明。
感谢您的任何建议。
答案 0 :(得分:1)
如果将mysqli用于数据库连接,则可以使用insert_id
解决此问题:
$conn = new mysqli($server, $user, $pass, $db);
$q = $conn->prepare("INSERT INTO testmerrill.Devices (device_name, device_manufacturer) VALUES (?, ?)"); // Prepare the query
$q->bind_param("ss", $device_name, $device_manufacturer); // Bind variables to prevent SQL injection
$q->execute();
$last_id = $q->insert_id; //Represents the last inserted id