问题描述
$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 的唯一(可怕)选项,这并不能保证正确的结果。
解决方法
虽然语句对象具有 insert_id
属性,但它似乎不时引起问题,如下所示。
由于语句对象 insert_id
属性在这么多年之后仍然没有完全记录下来,为了简单和安全,我建议使用 insert_id
的连接对象版本
也是这样
$vesselTransitID = $this->dbLink->insert_id;