El tema en realidad no es tan complicado:
- Si la tabla está vacía la consulta por MAX(), MIN, AVG() o cualquier otra cosa, siempre devolverá un registro nulo. Siempre. Y no sirve usar COUNT() porque no sólo requierrá dos consultas, sino que si no hay condiciones ni registros, también peude devolver NULLL.
- fetch_asoc() no es funcional cuando tienes tablas nulas, porque intenta mover el puntero más allá de donde no hay nada.
La solución es simple: Si no devuelve registros, devuelve las cabeceras de tablas, y la cantidad de registros es 0...
Código PHP:
Ver original$conexion = crearConexion();
$conexion->autocommit(FALSE);
$Estado ='A';
$Cont = 0;
$sql = "SELECT thdDia, thdHoraInic, thdHoraFina
FROM tmp_HoraDoce
WHERE usuConsecutivo = ? AND
sedConsecutivo = ?
ORDER BY thdDia";
$sentencia = $conexion->prepare($sql);
$sentencia->bind_param("ii", $usuConsecutivo, $sedConsecutivo);
$sentencia->execute();
$sentencia->bind_result($thdDia, $thdHoraInic, $thdHoraFina);
while($sentencia->fetch())
{
$fila = array('thdDia'=>$thdDia, 'thdHoraInic'=>$thdHoraInic, 'thdHoraFina'=>$thdHoraFina);
$Sql = "SELECT MAX (hdConsecutivo) Consec FROM horadoce";
$BusqHora = $conexion->query($Sql);
if($BusqHora->num_rows() > 0){
while($arrHora = $BusqHora->fetch_assoc())
{$hdConsecutivo = $arrHora['Consec'] + 1;}
$BusqHora->free();
}
}
else{$hdConsecutivo = 1;}