zf2 zend framework zend-framework zend-framework2 zend-db zend-db-table zend-db-select

zend-framework - zf2 - zend framework select



Zend 2: SQLSRV: $ prepareParams no se está configurando (3)

¿Alguien puede explicarme dónde está el

->setPrepareParams(array $prepareParams)

se llama en Zend / Db / Adapter / Driver / Sqlsrv / Statement.php ?

Específicamente, cuando usé esto:

$this->tableGateway->select(array("Personalnummer = $personalnumber"));

Funcionó. Pero cuando usé esto:

$this->tableGateway->select(array("Personalnummer" => $personalnumber));

No funcionó.

Intenté depurar esto y descubrí que los params no se estaban configurando con mi segundo método.


¿Estás buscando este código?

Adaptador / Controlador / Sqlsrv / Statement :: prepare ()

Sin profundizar en él, se ve como la forma en que llama a la instrucción select , espera que los índices sean números: 0, 1, 2, 3, ... y así sucesivamente.

Entonces cuando llamas

array("Personalnummer = $personalnumber")

Es lo mismo que llamar

array(0 => "Personalnummer = $personalnumber")

Y dado que el código espera un valor en el índice 0 , su código funciona entonces. Cuando utiliza declaraciones parametrizadas, su código falla. Porque no espera matrices con parámetros (su segunda forma).

Mira cómo estableces tus parámetros iniciales. Puede haber una opción de configuración que configure el código para esperar arreglos con parámetros.


En la configuración de su base de datos, ¿cuál es su controlador de conexión? PHP admite consultas parametrizadas solo a través de PDO, y Zend Framework no puede ir más allá de lo que PHP es capaz de hacer. Por lo tanto, para obtener array("Personalnummer" => $personalnumber) para que funcione, debe tener la clave del controlador de configuración pdo_sqlsrv . Parece que tienes ''driver'' => ''Sqlsrv'' lugar.


Es un método público, por lo que depende del programador del cliente usarlo.

Es solo un setter para la propiedad protegida $prepareParams .

¿Por qué esperas que se llame dentro de la clase?