当我插入一行时,我的表的‘id’字段会自动增加.我想插入一行,然后获取该ID.

我会照我说的那样做,但是有没有一种方法可以不用担心从插入行到获得id之间的时间呢?

我知道我可以在数据库中查询与输入的信息匹配的行,但是有很大的变化,会有重复项,唯一的区别是id.

推荐答案

$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysqli_insert_id($link);

mysqli_insert_id().

无论你做什么,不要先插入,然后再做"SELECT MAX(id) FROM mytable".就像你说的,这是比赛条件,没有必要.mysqli_insert_id()已经有了这个功能.


另一种方法是一次运行两个查询,并使用MySQLLAST_INSERT_ID()方法,其中两个表同时修改(并且PHP不需要任何ID),如下所示:

mysqli_query($link, "INSERT INTO my_user_table ...;
  INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");

Note确保每个连接分别跟踪ID(因此,冲突已经被防止).

Php相关问答推荐

根据自定义输入字段更新WooCommerce产品价格

CodeIgniter AJAX表格提交中的CSRF token 再生问题

Laravel 9如何过滤$的项目与结果?

Htaccess-重写对&api.php";的API请求以及对";web.php";的其他请求

Php解压缩deflate64

Laravel POST方法返回状态:POST方法上不允许使用405方法

从WooCommerce订单状态更改更新用户自定义元数据

当主页和帖子的缩略图相同时,如何减少主页和帖子的缩略图

WooCommerce在购买后多次重定向

更改WooCommerce checkout 中的错误消息以获得不可用的送货方式

未检测到laravel控制器

Regex|PHP捕获json字符串中的每个非法双引号

laravel Eloquent 模型的问题

调用未定义的方法 mysqli::execute_query()

调度程序不发送任何消息

使用 foreach php 将记录正确分配给正确的父级

使用 phpseclib 验证 RSA-PSS

致命错误:未捕获 Google_Exception:客户端机密 JSON 文件无效.在 /somepath/lib/vendor/google/apiclient/src/Google/Client.php

Shopware 6.4.20店铺激活问题

PDO 和 SQL 查询结果中日期格式不同的原因可能是什么?