Php 从查询中检索第一个insert Id,而insert into multi查询不起作用
我一直在处理这个项目,现在我必须插入第一个查询的id,它标识了该表与其他表的关系,我希望第一个查询的id保存为变量,然后插入到以下查询中 我试图设置要使用的值,但它不起作用,因为我希望所有这些都能在一个多查询中工作,下面是一些查询代码Php 从查询中检索第一个insert Id,而insert into multi查询不起作用,php,mysqli,Php,Mysqli,我一直在处理这个项目,现在我必须插入第一个查询的id,它标识了该表与其他表的关系,我希望第一个查询的id保存为变量,然后插入到以下查询中 我试图设置要使用的值,但它不起作用,因为我希望所有这些都能在一个多查询中工作,下面是一些查询代码 $query = "INSERT INTO guests ( user_id, first_name, last_name, nationality, status, sign_up) VALUES ( '$user_id', '$first_nam
$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'
或
也许这对你有用
参考资料:
@Zak代码没有试图检索ID,只是试图在后续查询中使用它。我认为代码应该可以工作。您还可以使用
SET@last_id=last_INSERT_id()
一般来说,我建议不要使用mysqli\u multi\u query()
,这会让事情变得更加困难。只需执行多个mysqli\u query()
调用。这也将允许您使用准备好的语句而不是替换变量。它在guest\u id
列中插入了什么而不是新的guest id?谢谢大家,尽管我正在转换到准备好的语句而不是替换变量,但它仍然有效
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = your_tablename' AND table_schema = DATABASE( ) ;