Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/11/2003, 14:55
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

No es que salga un error. El problema es que con mysql_num_rows() no hay que usar el or die().

La explicacion esta en como funciona el or. En PHP las operaciones booleanas se ejecutan en "cortocircuito". Solo se evaluan los operadores necesarios para tener una respuesta. Con el or se evalua solo hasta el primer TRUE.

En mysql_query() y demas funciones mysql_* que devuelven un valor distinto a 0 si son correctas o false en caso de error, el truco del or die() funciona, porque devuelven falso y se evalua el die().

Pero mysql_num_rows(), aun cuando no de error, puede devolver 0. Y en PHP 0 es equivalente a falso. Y por eso evalua el die().

Resumiendo, no uses or die() con mysql_num_rows(). Y no quieras crear codigo "inteligente", juntando en una linea dos. Yo recomiendo no poner nunca el mysql_query() como parametro de otra funcion. Tu codigo deberia ser:
Código PHP:
$result=mysql_query("SELECT DISTINCT ip_usr FROM $sql_tabla_count_pulsa") or die("MySQL dice: ".mysql_error());
$totalUsrVisit mysql_num_rows($result); 
No queda tan "kuul" como todo en una linea, pero es mucho mas claro.

Saludos.

PD: Si solo quieres el numero de ip distintas, quizas seria mejor hacer un COUNT().
__________________
Josemi

Aprendiz de mucho, maestro de poco.