需要注意的是,使用 mysqli_stmt->insert_id 不会为预处理插入语句的每次执行返回唯一的 ID。实际上,它似乎返回第一个插入 ID。如果您使用相同的预处理语句执行多次插入(对给定语句调用一次 mysqli_stmt::prepare 和多次调用 mysqli_stmt::execute()),并且需要保留每次插入的唯一 ID,请使用 mysqli_connection->insert_id。
(PHP 5, PHP 7, PHP 8)
mysqli_stmt::$insert_id -- mysqli_stmt_insert_id — 获取上次 INSERT 操作生成的 ID
面向对象风格
过程式风格
此函数目前没有文档;只有其参数列表可用。
需要注意的是,使用 mysqli_stmt->insert_id 不会为预处理插入语句的每次执行返回唯一的 ID。实际上,它似乎返回第一个插入 ID。如果您使用相同的预处理语句执行多次插入(对给定语句调用一次 mysqli_stmt::prepare 和多次调用 mysqli_stmt::execute()),并且需要保留每次插入的唯一 ID,请使用 mysqli_connection->insert_id。
对于使用零填充 ID 的用户,请注意 mysqli_stmt::$insert_id 将返回一个整数。换句话说,如果您的查询返回的 ID 是 #000099,则 mysqli_stmt::$insert_id 生成的值为 #99。
除了使用 sprintf('%06d',$id) 之外,我没有找到解决此问题的方法,但这假设您事先知道 ID 的大小。