我无法在嵌套的foreach循环中更新数据数组。我已经在SO上阅读了许多类似的问题,但是没有使用嵌套的foreach(请参阅我的数组模式),答案似乎是在值上使用“按引用”运算符“&”-但这对我不起作用。香港专业教育学院试图在外部循环var上使用'by ref'运算符,因为它似乎是逻辑上的,但无济于事。这是我的代码和数组转储:
输入数组模式:
array (
0 =>
array (
'ReviewDate' => '2016-05-08 00:00:00',
'ReviewDetails' => 'Release pending',
'RentAmount' => '112000.00',
'ReviewComplete' => 1,
),
1 =>
array (
'ReviewDate' => '2022-10-25 00:00:00',
'ReviewDetails' => 'Short-hold still open',
'RentAmount' => '21000.00',
'ReviewComplete' => 0,
),
)
这是我准备好的声明:
'UPDATE rentals SET `ReviewDate`=:ReviewDate, `ReviewDetails`=:ReviewDetails, `RentAmount`=:RentAmount, `ReviewComplete`=:ReviewComplete WHERE agreemID=14'
我的代码是:
try
{
$cnx->beginTransaction();
$stmt = $dbconx->prepare( $QryStr );
foreach ( $formArr as $tbl => $rec )
{
foreach ( $rec as $key => &$val ) {
$stmt->bindParam( $key, $val );
}
}
$stmt->execute();
$cnx->commit();
return $stmt->rowCount();
}
catch ( PDOException $e )
{
$cnx->rollBack();
$this->applog->logerr( __FUNCTION__ ." - ".$e->getMessage() );
return false;
}
数据库表的更新如下-您可以看到记录已被最终语句覆盖:
array (
0 =>
array (
'ReviewDate' => '2022-10-25 00:00:00',
'ReviewDetails' => 'Short-hold still open',
'RentAmount' => '21000.00',
'ReviewComplete' => 0,
),
1 =>
array (
'ReviewDate' => '2022-10-25 00:00:00',
'ReviewDetails' => 'Short-hold still open',
'RentAmount' => '21000.00',
'ReviewComplete' => 0,
),
)
这恰好是我在通过引用char使用“&”之前得到的-但是它对我不起作用,并且我的日志文件中没有错误。我的联系很好,因为我在其他任何地方都在使用它。我必须分别写出每个绑定吗?我试图避免这样做,因为我要更新30多个类似的表。任何帮助表示赞赏