我无法弄清楚为什么返回mysqli_insert_id()的id与我预期的id不同。这是我的代码:
$query = "INSERT INTO payments_table (payment_type, payment_number, payment_cost, insertion_date) VALUES ( '$paymentType', '$paymentNumber', '$totalCost', NOW())";
$data = mysqli_query($dbc, $query);
$currentPayerID = mysqli_insert_id($dbc);
//DEBUG
echo 'current payerID is: ' . $currentPayerID;
由于目前有2行,我希望在下次执行后回显“当前payerID为3”。但是,执行此代码后,它回显了以下内容: “当前的付款人ID是21”
一对夫妇注意到:
我搜遍了stackoverflow,但有些答案没有believe that what I'm finding is possible.我感谢任何慷慨的帮助!
答案 0 :(得分:1)
你所期待的是错误的。
使用自动增量字段允许您插入数据并通过每次插入将其递增1来生成唯一主键。
这对您来说意味着返回给您的是唯一创建的UD,而不是表中插入行的数量。
答案 1 :(得分:0)
mysqli_insert_id
函数返回查询生成的ID
,该表在具有AUTO_INCREMENT
属性的列的表上。如果上一个查询不是INSERT
或UPDATE
语句,或者修改后的表没有AUTO_INCREMENT
属性的列,则此函数将返回零。
可能你有截断,最后一个id是20然后它给你21.现在尝试一次。
答案 2 :(得分:0)
mysqli_insert_id
会返回上一个 AUTO_INCREMENT
值 - 如果您在payments_table
之后插入另一个表但之前 { {1}}您可能会获得意想不到的价值。
同样,mysqli_insert_id
列与数据库表中的行数不对应,但与表的生命周期内的总行数不对应。更准确地说,MySQL维护一个计数器变量,每次创建一个新行时都会递增。
以下查询将显示表的下一个预期AUTO_INCREMENT
值:
AUTO_INCREMENT