Buenas, tengo un problemilla a la hora de mostrar una consulta a una base de datos. Si ejecuto consultas sencillas, se realiza correctamente, por ejemplo
 
<?php
/* Abrir una conexión */
$mysqli = new mysqli("localhost", "root", "root", "db");
 
/* comprobar la conexión */
if (mysqli_connect_errno()) {
    printf("Falló la conexión: %s\n", mysqli_connect_error());
    exit();
}
 
$consulta = "SELECT * FROM clientes";
 
if ($sentencia = $mysqli->prepare($consulta)) {
 
    /* ejecutar la consulta */
    $sentencia->execute();
 
    /* almacenar el resultado */
    $sentencia->store_result();
 
    printf("Número de filas: %d.\n", $sentencia->num_rows);
 
    /* cerrar la sentencia */
    $sentencia->close();
}
 
/* cerrar la conexión */
$mysqli->close();
?>
 
 
resultado
 
Número de filas: 63.
 
me muestra correctamente las filas recuperadas ( realmente estoy mostrando los resultados en una tabla pero como me daba error me he puesto a probar con esto)
 
 
Cuando voy a ejecutar consultas mas complejas, o simplemente distintas del tipo
 
 
<?php
/* Abrir una conexión */
$mysqli = new mysqli("localhost", "root", "root", "db");
 
/* comprobar la conexión */
if (mysqli_connect_errno()) {
    printf("Falló la conexión: %s\n", mysqli_connect_error());
    exit();
}
 
$consulta = "SELECT * FROM HISTORICO_FILIAL_TOTAL
ORDER BY AÑO_MES, NOM_CLIENTE_IMPUTACION;
";
 
if ($sentencia = $mysqli->prepare($consulta)) {
 
    /* ejecutar la consulta */
    $sentencia->execute();
 
    /* almacenar el resultado */
    $sentencia->store_result();
 
    printf("Número de filas: %d.\n", $sentencia->num_rows);
 
    /* cerrar la sentencia */
    $sentencia->close();
}
 
/* cerrar la conexión */
$mysqli->close();
?>
 
no me sale nada por pantalla, he probado quitando el ORDER BY y si se ejecuta
 
¿A que se debe?
 
Después he probado otra:
 
<?php
/* Abrir una conexión */
$mysqli = new mysqli("localhost", "root", "root", "db");
 
/* comprobar la conexión */
if (mysqli_connect_errno()) {
    printf("Falló la conexión: %s\n", mysqli_connect_error());
    exit();
}
 
$consulta = "SELECT DISTINCT SERVICIOS.GRUPO_SERVICIO AS GRUPO, ALIAS.SUBSERVICIO
FROM
 
(SELECT DISTINCT AÑO_MES, COD_SERVICIO,SUBSERVICIO,COD_SUBSERVICIO
 FROM HISTORICO_FILIAL_TOTAL
WHERE COD_CLIENTE_IMPUTACION=40020
ORDER BY AÑO_MES, NOM_CLIENTE_IMPUTACION) alias
 
INNER JOIN SERVICIOS
 
ON(SERVICIOS.COD_SERVICIO=alias.COD_SERVICIO)
 
 
 
ORDER BY AÑO_MES,ORDEN";
 
if ($sentencia = $mysqli->prepare($consulta)) {
 
    /* ejecutar la consulta */
    $sentencia->execute();
 
    /* almacenar el resultado */
    $sentencia->store_result();
 
    printf("Número de filas: %d.\n", $sentencia->num_rows);
 
    /* cerrar la sentencia */
    $sentencia->close();
}
 
/* cerrar la conexión */
$mysqli->close();
?>
 
 
Y ni quitando los ORDER BY
 
 
¿Que es lo que ocurre? Todas las consultas estan bien, probadas y ejecutadas en navicat.
 
A ver si alguien me puede ayudar :(
 
 
Gracias y un saludo! 
  
 

 

