Problém je v tom, že svážete parametry s bindParam
, který používá vazbu odkazem. Ve vašem případě byste měli použít bindValue
místo toho:
foreach( $binders as $key => $value ) {
$sql->bindValue( $key, $value );
}
Nebo můžete pole předat přímo execute()
metoda:
$sql->execute( $binders );
Jak je popsáno v návodu:
the variable is bound as a reference and will only be evaluated at the time that PDOStatement::execute() is called.
Takže když vaše smyčka foreach skončí $value
má hodnotu poslední položky pole Apple
. Takže když execute
běží, oba :ctid
a :p1
hodnoty se stávají rovno Apple
. Určitě to není to, co chcete)