php - 从查询中检索第一个插入 ID 并插入到多查询中不起作用
问题描述
我一直在处理这个项目,现在我被困在我必须插入第一个查询的 id 的地方,它标识了该表与其他人的关系,我希望将第一个查询的 id 保存为变量和然后插入到以下查询中
我试图设置要使用的值但它不起作用,因为我希望所有这些都在一个多查询中工作,下面是一些查询代码
$query = "INSERT INTO guests (
user_id,
first_name,
last_name,
nationality,
status,
sign_up)
VALUES (
'$user_id',
'$first_name',
'$last_name',
'$nationality',
'$status',
NOW());";
$query = "SELECT @last_id := LAST_INSERT_ID();"
$query .= "INSERT INTO bookings (
user_id,
guest_id,
coming_from,
going_to,
date_in,
date_out,
sign_up)
VALUES (
'$user_id',
@last_id,
'$coming_from',
'$going_to',
'$date_in',
'$date_out',
NOW());";
$query .= "INSERT INTO preference (
guest_id,
prefer,
alergy,
sign_up)
VALUES (
@last_id,
'$prefer',
'$alergy',
NOW());";
$query .= "INSERT INTO rooms (
user_id,
guest_id,
room_number,
room_type,
room_price,
sign_up)
VALUES (
'$user_id',
@last_id,
'$room_number',
'$room_type',
'$room_price',
NOW())";
if(mysqli_multi_query($conn, $query))
{
echo "Guest Received successfully!";
} else {
echo "Failed! Data input error!";
}
}
我希望它能够获取第一个查询客人 ID 并将其插入 @last_id 列,请问有什么想法吗?
解决方案
有时,我不得不使用这个:
SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'tablename'
或者
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = your_tablename' AND table_schema = DATABASE( ) ;
也许这对你有用
参考:
https://dev.mysql.com/doc/refman/8.0/en/show-table-status.html