Esto es un servidor de prueba que me he montado con mi pc, el de producción va bien, el de producción es un winxp yel mio un w7 de 64.
En todas las tablas y todas las consultas me hace lo mismo, hasta el punto que he tenido que montar las consultas de manera que me den un primer registro repetido, de manera que luego puede saltar al segundo y tendo los datos bien.
Este es una de las consultas tal como la tengo montada, lo que hace es leer los datos de la empresa, para colocarlos en una factura que hago al vuelo en pdf:
$sql = "
Select empresa, direccion as dirempre, ciudad as ciudadempre, region as provempre , codpostal as cpempre, nif as nifempre, pais as paisempre, numtel as telempre, fax as faxempre
from infge where idreg = '1'
union all
Select empresa, direccion as dirempre, ciudad as ciudadempre, region as provempre , codpostal as cpempre, nif as nifempre, pais as paisempre, numtel as telempre, fax as faxempre
from infge where idreg = '1'";
try {
$queri = $co->prepare($sql);
$queri->execute();
$empresa = $queri->fetchAll();
$queri = NULL;
unset($empresa[0]); //-registro no válido, debido a que se pierde el primer registro, no se porque.
$empresa = array_shift($empresa); //-saca el primer registro válido y lo reasigna
} catch (PDOException $e) {
$ok = false;
$queri = NULL;
$inf = $e->getMessage();
}
Se puede ver que con la clausula union, lo que hago es duplicar el dato que le pido a la base de datos, luego después de recogidos los 2 registros que me da, porque me devuelve 2 registros, pero el primero siempre contiene datos en blanco, lo que hago es eliminar el primero y luego con el array_shift pongo los datos del segundo en el array que luego voy a utilizar para la factura.
Y así en todas las consultas aunque tengan que devolver 1 registro ó más de uno, siempre tengo que duplicar el primero.
Menos mal que como he dicho antes, en el pc de produccion si que va bien !!