Problema con ORDER BY al poner register globals en off

Hola zagalet, tengo un problema que no he podido solucionar. Usé el siguiente código para mostrar unas estadísticas de visitas. Funcionó en el server antiguo pero al actualizar el PHP, y por cierto con register globals en off, dejó de funcionar. El código es el siguiente:
$sql1 = "SELECT visitas.*,reg.*, count(reg.id) FROM visitas,reg WHERE reg.id = visitas.id_usuario GROUP BY reg.id ORDER BY count(reg.id)";
$resultados = mysql_query($sql1,$set_con);
$total_registros = mysql_num_rows($resultados);
Dando error:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/sitio/public_html/admin/visitas.php on line 196
Creo que recogí todas las variables con extract($_POST); y unas _GET como la ID pero sigue el error.
Cualquier tipo de ayuda o comentario es muy bien recibido.
Gracias de antemano.

2 Respuestas

Respuesta
1
La sentencia sql parece correcta, revisa los campos de las tablas que los hayas puesto bien.
El error que suelta es que el mysql no te da un valor correcto (sentencia mal formada)
No se donde introduces la variable recibida por POST o GET.
Si tienes el phpmyadmin instalado escribe la consulta y te dará el error con más aproximación, ves haciendo cambios en la sentencia hasta que te de resultado.
Y para ver si los parametros que le has pasado los has recibido bien despues de la linea $sql1="SELECT ...
Pon echo $sql1; para ver la sentencia en pantalla y para copiar y pegar en mysql.
Gracias por tu ayuda zagalet, finalmente el código corregido me quedó:
$sql1 = "SELECT visitas.*,reg.*, count(reg.id) AS 'cuenta' FROM visitas,reg WHERE reg.id = visitas.id_usuario GROUP BY reg.id ORDER BY cuenta";
Saludos y de nuevo gracias.
Sorry, primera vez que uso el sistema. Repito mis saludos y agradecimientos de arriba :D
Si con esto se te ha solucionado puedes cerrar la pregunta.
Aunque insisto que no veo por ningún sitio las variables superglobales GET, POST que es el problema que te daba.
El ORDER BY de la forma que tenias antes tendría que funcionar igual, con el alias también está bien.
Respuesta
1
Creo que el problema esta en que $resultados no contiene los resultados sino false (deberías comprobarlo), y eso a su vez ocurre porque la sentencia SQL es incorrecta:
Usas count(reg. Id) en el ORDER BY
En lugar de eso has de nombrar la columna count y usar ese nombre en el ORDER BY:
SELECT visitas.*,reg.*, count(reg.id) AS cc FROM visitas,reg WHERE reg.id = visitas.id_usuario GROUP BY reg.id ORDER BY cc
Gracias por tu ayuda David, finalmente el código corregido me quedó:
$sql1 = "SELECT visitas.*,reg.*, count(reg.id) AS 'cuenta' FROM visitas,reg WHERE reg.id = visitas.id_usuario GROUP BY reg.id ORDER BY cuenta";
Saludos y de nuevo gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas