Php 从查询中检索第一个insert Id,而insert into multi查询不起作用

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

我一直在处理这个项目,现在我必须插入第一个查询的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'

也许这对你有用

参考资料:


@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( ) ;