Foros del Web » Programando para Internet » PHP »

Problema con mysql_num_rows

Estas en el tema de Problema con mysql_num_rows en el foro de PHP en Foros del Web. Tengo problemas con lo siguiente: Si realizo el codigo así Código: $db_table_name="registros"; $db_connection = mysql_connect($db_host, $db_user, $db_password); if (!$db_connection) { die('No se ha podido conectar ...
  #1 (permalink)  
Antiguo 13/10/2015, 15:07
Avatar de garcef  
Fecha de Ingreso: agosto-2001
Ubicación: Querétaro, México
Mensajes: 289
Antigüedad: 22 años, 8 meses
Puntos: 0
Problema con mysql_num_rows

Tengo problemas con lo siguiente: Si realizo el codigo así

Código:
$db_table_name="registros";
   $db_connection = mysql_connect($db_host, $db_user, $db_password);

if (!$db_connection) {
	die('No se ha podido conectar a la base de datos');
}
$subs_name = utf8_decode($_POST['name']);
$subs_last = utf8_decode($_POST['last']);
$subs_email = utf8_decode($_POST['email']);

$resultado=mysql_query("SELECT * FROM ".$db_table_name." WHERE Email = '".$subs_email."'", $db_connection);

if (mysql_num_rows($resultado)>0)
{

header('Location: http://localhost/suscribe/Fail.html');

} else {
	
	$insert_value = 'INSERT INTO `' . $db_name . '`.`'.$db_table_name.'` (`name` , `last` , `email`) VALUES ("' . $subs_name . '", "' . $subs_last . '", "' . $subs_email . '")';
No tengo problemas, el ingreso de datos es correcto, pero si agrego un registro mas:

Código:
if (!$db_connection) {
	die('No se ha podido conectar a la base de datos');
}
$subs_NombreEmpresa = utf8_decode($_POST['NombreEmpresa']);
$subs_Telefono = utf8_decode($_POST['Telefono']);
$subs_email = utf8_decode($_POST['email']);
$subs_NombreEncargado = utf8_decode($_POST['NombreEncargado']);

$resultado=mysql_query("SELECT * FROM ".$db_table_name." WHERE Email = '".$subs_email."'", $db_connection);

if (mysql_num_rows($resultado)>0)
{

header('Location: http://localhost/suscribe/Fail.html');

} else {
	
	$insert_value = 'INSERT INTO `' . $db_name . '`.`'.$db_table_name.'` (`NombreEmpresa` , `Telefono` , `email` , `NombreEncargado`) VALUES ("' . $subs_NombreEmpresa . '", "' . $subs_Telefono . '", "' . $subs_email . '", "' . $subs_NombreEncargado . '",)';

mysql_select_db($db_name, $db_connection);
$retry_value = mysql_query($insert_value, $db_connection);
y regresa el error

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in H:\xampp\htdocs\copiareg2.php on line 19
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1


no se que pasa
__________________
garcef
Facebook: url]https://www.facebook.com/memelandiax[/url]
Twitter: @Memelandiax Vine:memelandiax Instagram: memelandiax Youtube: memelandiax
  #2 (permalink)  
Antiguo 13/10/2015, 15:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con mysql_num_rows

La única razón de que mysql_query() devuelva un boolean es cuando ocurre un error con la consulta.

¿Ya depuraste cual es el error con mysql_error() o nos toca adivinar?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/10/2015, 15:25
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema con mysql_num_rows

Una pregunta, porque en al consulta de insert, nombras la base de datos?. Capaz me equivoque pero yo las veces que he hecho un insert nunca he necesitado poner la base de datos en la misma consulta. Generalmente la pongo junto con los datos de conexión. Eso sin contar que ya estas mencionando la base de datos en la sentencia inferior.

mysql_select_db($db_name, $db_connection);

No es por hacerte cambiar tu forma de programar, pero no te seria más sencillo si modificas ciertas lineas de la siguiente forma?.

Código PHP:
Ver original
  1. $db_table_name="registros";
  2.    $db_connection = mysqli_connect($db_host, $db_user, $db_password, [B]$db_name[/B]);
  3.  
  4. if (!$db_connection) {
  5.     die('No se ha podido conectar a la base de datos');
  6. }
  7.  
  8. $subs_NombreEmpresa = utf8_decode($_POST['NombreEmpresa']);
  9. $subs_Telefono = utf8_decode($_POST['Telefono']);
  10. $subs_email = utf8_decode($_POST['email']);
  11. $subs_NombreEncargado = utf8_decode($_POST['NombreEncargado']);
  12.  
  13. $resultado=mysql_query("SELECT * FROM ".$db_table_name." WHERE Email = '".$subs_email."'", $db_connection);
  14.  
  15. if (mysql_num_rows($resultado)>0)
  16. {
  17.  
  18. header('Location: http://localhost/suscribe/Fail.html');
  19.  
  20. } else {
  21.    
  22.     $insert_value = [B]'INSERT INTO `'.$db_table_name.'` [/B](`NombreEmpresa` , `Telefono` , `email` , `NombreEncargado`) VALUES ("' . $subs_NombreEmpresa . '", "' . $subs_Telefono . '", "' . $subs_email . '", "' . $subs_NombreEncargado . '",)';
  23.  
  24. $retry_value = mysql_query($insert_value, $db_connection);
  25.  
  26. }

De todas formas, y volviendo al tema del error. Me fije que este se da cuando haces la consulta select diciendo que esta está mal declarada, no es en el insert. Asi que si quieres puedes ignorar lo que te digo.

En el código de abajo veo que no has puesto la conexión ni la declaración del nombre de la tabla. Doy por sentado que se te habrá ido el copiarla al ponerla en el post, en caso de ser contrario, es posible que el fallo este ahí. De todas formas. Prueba a sustituir en el primer código lo que quieras que haga el segundo. Algo como lo que hice yo en el código de arriba.

Se que me he liado algo al explicarme, asi que si tienes alguna duda al entenderme no dudes en preguntar xD
  #4 (permalink)  
Antiguo 13/10/2015, 16:23
Avatar de garcef  
Fecha de Ingreso: agosto-2001
Ubicación: Querétaro, México
Mensajes: 289
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: Problema con mysql_num_rows

Ya lo cambie y sigue dando el mismo error. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in H:\xampp\htdocs\copiareg2.php on line 19
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

si el codigo es el mismo, se me paso al copiar pegar

Lo que no comprendo es porque con tres campos no hay problema pero al ingresar el cuarto viene el error. ($subs_name = utf8_decode($_POST['name']);
$subs_last = utf8_decode($_POST['last']);
$subs_email = utf8_decode($_POST['email']);)

y al sumar
($subs_NombreEmpresa = utf8_decode($_POST['NombreEmpresa']);
$subs_Telefono = utf8_decode($_POST['Telefono']);
$subs_email = utf8_decode($_POST['email']);
$subs_NombreEncargado = utf8_decode($_POST['NombreEncargado']);)

Es ahi donde empieza el problema
__________________
garcef
Facebook: url]https://www.facebook.com/memelandiax[/url]
Twitter: @Memelandiax Vine:memelandiax Instagram: memelandiax Youtube: memelandiax
  #5 (permalink)  
Antiguo 13/10/2015, 16:25
Avatar de garcef  
Fecha de Ingreso: agosto-2001
Ubicación: Querétaro, México
Mensajes: 289
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: Problema con mysql_num_rows

Cita:
Iniciado por pateketrueke Ver Mensaje
La única razón de que mysql_query() devuelva un boolean es cuando ocurre un error con la consulta.

¿Ya depuraste cual es el error con mysql_error() o nos toca adivinar?
if (mysql_num_rows($resultado)>0)
{

header('Location: http://localhost/suscribe/Fail.html');

} else {

$insert_value = 'INSERT INTO `' . $db_name . '`.`'.$db_table_name.'` (`NombreEmpresa` , `Telefono` , `email` , `NombreEncargado`) VALUES ("' . $subs_NombreEmpresa . '", "' . $subs_Telefono . '", "' . $subs_email . '", "' . $subs_NombreEncargado . '",)';

mysql_select_db($db_name, $db_connection);
$retry_value = mysql_query($insert_value, $db_connection);

if (!$retry_value) {
die('Error: ' . mysql_error());
}

header('Location: http://localhost/suscribe/Success.html');

}

mysql_close($db_connection);
__________________
garcef
Facebook: url]https://www.facebook.com/memelandiax[/url]
Twitter: @Memelandiax Vine:memelandiax Instagram: memelandiax Youtube: memelandiax
  #6 (permalink)  
Antiguo 13/10/2015, 16:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con mysql_num_rows

Pero el error venía entonces del SELECT o del INSERT.

Por favor, una cosa a la vez, ¿cual de las dos consultas provoca el error?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/10/2015, 16:40
Avatar de garcef  
Fecha de Ingreso: agosto-2001
Ubicación: Querétaro, México
Mensajes: 289
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: Problema con mysql_num_rows

si, debe Ser SELECT
la linea es

$resultado=mysql_query("SELECT * FROM ".$db_table_name." WHERE Email = '".$subs_email."'", $db_connection);

(linea 19 del error) if (mysql_num_rows($resultado)>0)
__________________
garcef
Facebook: url]https://www.facebook.com/memelandiax[/url]
Twitter: @Memelandiax Vine:memelandiax Instagram: memelandiax Youtube: memelandiax
  #8 (permalink)  
Antiguo 13/10/2015, 17:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con mysql_num_rows

Ajá, ¿y por qué ahí no depuras el error pues?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 13/10/2015, 17:23
Avatar de garcef  
Fecha de Ingreso: agosto-2001
Ubicación: Querétaro, México
Mensajes: 289
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: Problema con mysql_num_rows

Wow! Gracias por tu valiosa ayuda! eres un genio! no se me hubiera ocurrido!!!

Por eso el viejo cuento de las dos cubetas de cangrejos, los cangrejos mexicanos no escapan de la cubeta, porque en lugar de ayudarnos, fregamos al otro. Mucho mi campeón!!, sigue así, México te necesita!!!
__________________
garcef
Facebook: url]https://www.facebook.com/memelandiax[/url]
Twitter: @Memelandiax Vine:memelandiax Instagram: memelandiax Youtube: memelandiax
  #10 (permalink)  
Antiguo 13/10/2015, 17:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con mysql_num_rows

¿Cómo? ¿No pudiste hacer esto?

Código PHP:
Ver original
  1. $resultado=mysql_query("SELECT * FROM ".$db_table_name." WHERE Email = '".$subs_email."'", $db_connection);
  2.  
  3. if (!$resultado) {
  4.   die('ERROR: ' . mysql_error());
  5. }
  6.  
  7. if (mysql_num_rows($resultado)>0) // ...

Sólo así sabrás exactamente cual es el error que genera la consulta.

Pues, si consultarás más a menudo el manual descubrirías que mysql_query() devuelve un boolean en lugar de un resource cuando ocurre un error:

Cita:
Iniciado por http://php.net/mysql_query
Valores devueltos ¶

Para SELECT, SHOW, DESCRIBE, EXPLAIN y otras sentencias que retornan un conjunto de resultados, mysql_query() devuelve un resource en caso de éxito, o FALSE en caso de error.

Para otros tipos de sentencias SQL, tales como INSERT, UPDATE, DELETE, DROP, etc, mysql_query() devuelve TRUE en caso de éxito o FALSE en caso de error.

El conjunto de resultados devuelto debería ser pasado a mysql_fetch_array(), y otras funciones para manejar las tablas del resultado, para acceder a los datos retornados.

Use mysql_num_rows() para averiguar cuántas filas fueron devueltas por la sentencia SELECT, o mysql_affected_rows() para averiguar cuántas filas fueron afectadas por las sentencias DELETE, INSERT, REPLACE, o UPDATE.

mysql_query() también fallará y retornará FALSE si el usuario no está autorizado para acceder a la/s tabla/s a la/s que hace referencia la consulta.
A partir de ahí si usas mysql_num_rows() y arroja el error:

Cita:
mysql_num_rows() expects parameter 1 to be resource, boolean given
Entonces deduces que mysql_query() produce el error.

¿Ahora si entiendes a lo que me refiero con depurar tu código o no?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 13/10/2015 a las 17:42 Razón: referencia al manual

Etiquetas: html, mysql, registro, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:53.