我使用预准备语句将一系列行插入数据库。我遇到的问题是最后一次迭代没有插入。代码如下:
$sql = 'INSERT INTO ReportDataLoggerTbl (
date,
dataTypeID,
ClientID,
dataVal
) VALUES (
:timestamp,
:dataType,
:clientID,
:encoded
)';
$cdsLink->beginTransaction();
$q = $cdsLink->prepare($sql);
foreach ($orderRows as $orderInfo) {
// Get client
$clientID = isset($orderInfo['ClientID']) === true ? $orderInfo['ClientID'] : 0;
// Encode array
$encoded = json_encode($orderInfo);
$q->bindvalue(':timestamp', $timestamp, \PDO::PARAM_INT);
$q->bindvalue(':dataType', $dataType, \PDO::PARAM_INT);
$q->bindvalue(':clientID', $clientID, \PDO::PARAM_INT);
$q->bindvalue(':encoded', $encoded, \PDO::PARAM_STR);
$q->execute();
}//end foreach
$cdsLink->commit();
总共有33套要插入数据库。完成所有操作后,前32个在数据库中,而最后一个不在。有任何想法吗?谷歌并没有真正帮助这个。