Estoy trabajando en un proyecto PHP
con conexión a MySQL
, pero tengo un inconveniente, cuando hago un select
, en algunos casos foreach
puede recorrer el objeto PDOStatement y en otros no, no se si deba a la consulta o que podrá ser. He probado hacer debugging
del código y simplemente se salta el ciclo foreach
en algunas consultas. Esta es la consulta general:
/* $seleccionado es el servicio seleccionado que cambia según lo que
escoja el cliente, es un select en HTML*/
"SELECT nombre, descr, imagen FROM servicio WHERE nombre =
'$seleccionado'"
Funciona cuando $seleccionado toma cualquiera de los siguientes valores :
Soluciones En Enlaces Microondas
Despliegue de Red 4G, 3G
Alquiler de Equipos
Deja de funcionar cuando $seleccionado toma cualquier de los valores:
Análisis de Interferencia
Soluciones de Cobertura de Señales
El problema está en la función procesar_resultado($campos_bd), es el primer foreach el cuál a veces se saltea con las consultas mencionadas arriba.
Dejo el código de la conexión:
La pila de llamadas empieza con la función obtener_datos($consulta, $campos_bd);
<?php
include('constantes.php');
class conexion{
private $conexion;
private $res;
//El segundo parametro es un arreglo de cadenas que tiene los
campos de la base de datos
public function obtener_datos($consulta, $campos_bd){
try{
$this->conectar_y_seleccionar_bd(constantes::SERVER,
constantes::USER, constantes::PASS, constantes::BD);
$this->res = $this->conexion->query($consulta);
return $this->procesar_resultado($campos_bd);
} catch(PDOException $e){
print "Error!: ".$e->getMessage()."</br>";
die();
}
}
public function actualizar_datos($consulta){
try{
$this->conectar_y_seleccionar_bd(constantes::SERVER,
constantes::USER, constantes::PASS, constantes::BD);
$this->res = $this->conexion->query($consulta);
} catch(PDOException $e){
print "Error!: ".$e->getMessage()."</br>";
die();
}
}
private function conectar_y_seleccionar_bd($server, $user, $pass, $bd){
$this->conexion = new PDO("mysql:host=$server;dbname=$bd", $user, $pass);
}
private function procesar_resultado($campos_bd){
$arreglo_resultado = array();
foreach($this->res as $fila){
$vector = array();
foreach ($campos_bd as $campo) {
array_push($vector, $fila[$campo]);
}
array_push($arreglo_resultado, $vector);
}
return $arreglo_resultado;
}
}
?>