Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDO - consulta sem resultados


O problema aqui é que você vincula parâmetros com bindParam , que usa vinculação por referência. No seu caso, você deve usar bindValue em vez de:
foreach( $binders as $key => $value ) {
    $sql->bindValue( $key, $value );
}

Ou você pode passar seu array diretamente para execute() método:
$sql->execute( $binders );

Conforme descrito no manual:

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

Então, quando seu loop foreach termina $value tem o valor do último item do array Apple . Então, quando execute roda, ambos :ctid e :p1 os valores estão se tornando iguais a Apple . Certamente, isso não é o que você quer)