首页 > 解决方案 > 从查询中检索第一个插入 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 列,请问有什么想法吗?

标签: phpmysqli

解决方案


有时,我不得不使用这个:

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

https://php.net/manual/en/mysqli.insert-id.php


推荐阅读