ここでの問題は、パラメータをbindParam
でバインドすることです。 、参照によるバインディングを使用します。あなたの場合、bindValue
を使用する必要があります 代わりに:
foreach( $binders as $key => $value ) {
$sql->bindValue( $key, $value );
}
または、配列をexecute()
に直接渡すこともできます 方法:
$sql->execute( $binders );
マニュアルで説明されているように:
the variable is bound as a reference and will only be evaluated at the time that PDOStatement::execute() is called.
したがって、foreachループが終了すると$value
最後の配列アイテムApple
の値があります 。したがって、execute
実行、両方:ctid
および:p1
値はApple
と等しくなりつつあります 。確かに、これはあなたが望むものではありません)