php - 在单个查询中使用 mysql_insert_id

标签 php mysql mysqli

好吧,不知道这在实践中是否像理论上一样简单,但我想知道。

我在该查询中有一个 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。

  1. 您可以使用经典的方法,拉出前一条记录的 id 并为其加 1,这不是一个很好的解决方案,因为如果删除一条记录,自动增量值和最后一个值 +1 可能会有所不同。
  2. 运行多个查询,然后使用 insert_id(MySQLi 与您使用的不同,您最好使用评论中提到的 $db->lastInsertId();
  3. 预先运行查询并将其存储为变量;

    选择auto_increment FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'tablename'

我强烈推荐选项 2,它是实现您想要实现的目标的最干净、最可靠的方法。

关于php - 在单个查询中使用 mysql_insert_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30551029/

相关文章:

mysql - Yii2查询mysql,添加查询中不存在的列

php - 如何保证登录php-mysqli的安全?

php - mysql 到 mysqli php,只需输入 "i"?

php - 添加后的 Codeigniter 查询

php - 安排事件的最佳方式

php - 在 mysql 中存储 URL

javascript - jQuery 根据选择值结合多行(父函数?)从表中填充文本输入

php - 向特定域发送 POST 请求?

php - 错误的 PDO Select 语句

php - 页面中多个查询的优化