Mysql
 sql >> Database >  >> RDS >> Mysql

PDO - query che non dà risultati

Il problema qui è che stai vincolando i parametri con bindParam , che utilizza l'associazione per riferimento. Nel tuo caso dovresti usare bindValue invece:

foreach( $binders as $key => $value ) {
    $sql->bindValue( $key, $value );
}

Oppure puoi passare il tuo array direttamente a execute() metodo:

$sql->execute( $binders );

Come descritto nel manuale:

the variable is bound as a reference and will only be evaluated at the time that PDOStatement::execute() is called.

Quindi, quando il tuo ciclo foreach termina $value ha il valore dell'ultimo elemento dell'array Apple . Quindi, quando execute viene eseguito, entrambi :ctid e :p1 i valori stanno diventando uguali a Apple . Sicuramente, questo non è quello che vuoi)