Pregunta:
Fecha: 06-09-2017 08:30:26
(En Inglés)
El problema aqui es con el parametro nombres, que no me esta respetando ese parametro y mi duda es si lo tengo que enviar como array o en que formato ya que es en un IN, espero su ayuda gracias Votos: 0 - Respuestas: 7 - Vistas: 11 Compartir en: Google Facebook Twitter LinkedIn Link
PDO y bindParam()[No resuelta]
Que tal amigos acudo a ustedes por que tengo la siguiente duda: Tengo un query y usando PDO de php pongo de la siguiente forma (lo haré con un query de ejemplo):
$anio = 1997;
$nombres = " 'ruben','jorge','armando' ";
$sql = "
SELECT
*
FROM tabla
WHERE anio = :anio AND nombres IN ( :nombres )
";
$query = $pdoaux->prepare($sql);
$query->bindParam(':anio',$anio);
$query->bindParam(':anio',$nombres);
$query->execute();
$resp = $query->fetchAll();
El problema aqui es con el parametro nombres, que no me esta respetando ese parametro y mi duda es si lo tengo que enviar como array o en que formato ya que es en un IN, espero su ayuda gracias Votos: 0 - Respuestas: 7 - Vistas: 11 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 06-09-2017 12:25:30 Hola Ruben,
Puedes hacer lo siguiente:
$anio = 1997; $nombres = ['ruben','jorge','armando']; $sql = " SELECT * FROM tabla WHERE anio = :anio AND nombres IN ( " . implode(', ', array_fill(0, count($nombres), '?')) . " ) "; $query = $pdoaux->prepare($sql); $query->bindParam(':anio',$anio); foreach ($nombres as $index=>$nombre) { $query->bindParam($index, $nombre, PDO::PARAM_STR); } $query->execute(); $resp = $query->fetchAll();
Ojalá te sirva.
Saludos Votos: 0 - Link respuesta -
Fecha: 07-09-2017 07:33:50 Gracias por la respuesta Ernesto, no me funciona me manda error por la cantidad de parametros pero sigo buscando la falla Votos: 0 - Link respuesta
-
-
Fecha: 07-09-2017 08:08:54 Si claro mira es el siguiente:
Warning: PDOStatement::bindParam(): SQLSTATE[HY093]: Invalid parameter number: Columns/Parameters are 1-based in /var/www/intranet/mod_motorola_reportes/lista_reporte_produccion_detalle.php on line 22 Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters in /var/www/intranet/mod_motorola_reportes/lista_reporte_produccion_detalle.php on line 24 Votos: 0 - Link respuesta -
Fecha: 07-09-2017 08:47:43 A ver intenta con este:
$index = 0; $anio = 1997; $nombres = ['ruben','jorge','armando']; $sql = " SELECT * FROM tabla WHERE anio = ? AND nombres IN ( " . implode(', ', array_fill(0, count($nombres), '?')) . " ) "; $query = $pdoaux->prepare($sql); $query->bindParam($index, $anio, PDO::PARAM_STR); foreach ($nombres as $nombre) { $query->bindParam(++$index, $nombre, PDO::PARAM_STR); } $query->execute(); $resp = $query->fetchAll();Votos: 0 - Link respuesta -
-
Fecha: 11-09-2017 07:41:16 en vez de un foreach prefiero hacer algo como:
call_user_func_array(array($stmt, "bind_param"), array_merge(array($types), $params));
internamente debe hacer lo mismo pero se ve mejor a mi parecer :) Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
