好吧,不知道这在实践中是否像理论上一样简单,但我想知道。
我在该查询中有一个 INSERT
查询,我想提取 AUTO_INCRMENT
值,然后在同一查询中重用它。
例如
//values to be inserted in database table
$a_name = $mysqli->real_escape_string($_POST['a_name']);
$details = $mysqli->real_escape_string($_POST['details']);
$display_type = $mysqli->real_escape_string($_POST['display_type']);
$getId = mysqli_insert_id();
//MySqli Insert Query
$insert_row = $mysqli->query("INSERT INTO articles (a_name,details,display_type,date_posted) VALUES('$a_name','$details','$display_type$getId',CURRENT_TIMESTAMP)");
显然,我得到了一个空白值
(我知道,因为mysqli_insert_id()
在查询之前,但我已经尝试了所有我能做的,但没有结果如我所愿。有人可以帮助我如何实现这一目标
最佳答案
据我所知,这是不可能完成的。由于没有运行任何查询,MySQL 无法返回该查询的 ID。
- 您可以使用经典的方法,拉出前一条记录的 id 并为其加 1,这不是一个很好的解决方案,因为如果删除一条记录,自动增量值和最后一个值 +1 可能会有所不同。里>
- 运行多个查询,然后使用 insert_id(MySQLi 与您使用的不同,您最好使用评论中提到的
$db->lastInsertId();
。 预先运行查询并将其存储为变量;
选择
auto_increment
FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'tablename'
我强烈推荐选项 2,它是实现您想要实现的目标的最干净、最可靠的方法。
关于php - 在单个查询中使用 mysql_insert_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30551029/