PDO::bindParam en un bucle foreach, ¿todos los valores se establecen como iguales?

Resuelto Lanxe asked hace 54 años • 0 respuestas

Estoy tratando de hacer la vida un poco más fácil para las llamadas repetidas a la base de datos con una función que (en teoría) debería permitirme vincular parámetros usando una matriz:

    function query($tblName,$queryParams = false){
    $this->queryObject = $this->con->prepare($this->queryString);
    if($queryParams){
        foreach ($queryParams as $key => $value) {
            $this->queryObject->bindParam($key, $value);
        }
    }
    $this->queryResult = $this->queryObject->execute();
    print_r($this->queryResult);
}

Que luego llamo así:

$queryParams = array(':userName' => $_POST['username'], ':password' => $_POST['password'], ':salt'=>$userUser->salt, ':userEmail'=>$_POST['email']);
$registrationDb->query('tblUser', $queryParams);

La conexión de la base de datos está funcionando y se está realizando una escritura; sin embargo, todos los valores se están configurando en $_POST['email]y no puedo entender por qué sucede esto.

¿Existe una mejor manera de hacer esto?

Lanxe avatar Jan 01 '70 08:01 Lanxe
Aceptado

bindParamvincula la variable por referencia, por lo que necesita bindValueen su lugar:

$this->queryObject->bindValue($key, $value);
zerkms avatar Sep 09 '2012 23:09 zerkms