提问者:小点点

MySQL insert_id返回null,即使存在插入


我有以下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);

我的DB架构如下:

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

我已经把厨房的水槽扔过去了,但一点也没有。无论我做什么,$VesselTransitID总是未定义的。我已经验证了实际上有一个插入。我只剩下运行另一个select并返回最大VesselTransitID的(可怕的)选项,这并不能保证正确的结果。


共1个答案

匿名用户

code>insert_id属性是mysqli类(连接)的属性,而不是语句类的属性

也是如此

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