即使有插入,MySQL insert_id也会返回null

问题描述 投票:0回答:2

我有以下 PHP 代码。 我希望返回插入的最后一个 id:

$sql = $this->dbLink->prepare("
            INSERT INTO VesselTransits (CreatedByUserID, TerminalID, VesselArrivalDate, VesselNameID)
            VALUES (?,?,?,?)
    ");
//i=integer, s=string
$sql->bind_param('iisi', $userID, $terminalID, $arrivalDate, $vesselNameID);
$userID          = $this->invoiceData['userID'];
$terminalID      = $this->invoiceData['terminalID'];
$arrivalDate     = date('Y-m-d', strtotime($this->invoiceData['berthDate']));
$vesselNameID    = $this->invoiceData['vesselNameID'];
$sql->execute();
$vesselTransitID = $sql->insert_id;
//echo('RecordInvoice line '.__LINE__.'<pre>');print_r($vesselTransitID);echo('</pre>');exit();

return($vesselTransitID);

我的数据库架构如下:

CreatedByUserID   int
CreationDate      datetime
ModifiedByUser    int
ModifyDate        datetime
TerminalID        int
VesselArrivalDate datetime
VesselNameID      int
VesselTransitID   int [auto_increment]

我把厨房水槽扔向它,但没有骰子。无论我做什么,

$vesselTransitID
始终是未定义的。我已经确认确实有插入。 我只剩下唯一的(可怕的)选项运行另一个选择并返回 MAX VesselTransitID,这不能保证正确的结果。

php mysql mysqli auto-increment
2个回答
1
投票

虽然语句对象具有

insert_id
属性,但它似乎有时会引起问题,如下所示。

由于声明对象

insert_id
属性在这么多年之后仍然没有完全记录,我建议为了简单性和安全性使用连接对象版本
insert_id

也这样吧

$vesselTransitID = $this->dbLink->insert_id; 

0
投票

搜索Farawan后,我使用了以下代码,它工作正常:

$db->查询();

$lastInsertedId = $db->insertid();

© www.soinside.com 2019 - 2024. All rights reserved.