Foros del Web » Programando para Internet » PHP »

[Ayuda][PHP] Error con consulta.

Estas en el tema de [Ayuda][PHP] Error con consulta. en el foro de PHP en Foros del Web. Buenas, haciendo el registro de una web, me surgieron problemas muy desconcertantes, ya que por más que reviso y reviso, no veo el fallo, a ...
  #1 (permalink)  
Antiguo 03/08/2013, 16:30
 
Fecha de Ingreso: julio-2013
Mensajes: 1
Antigüedad: 11 años, 3 meses
Puntos: 0
Exclamación [Ayuda][PHP] Error con consulta.

Buenas, haciendo el registro de una web, me surgieron problemas muy desconcertantes, ya que por más que reviso y reviso, no veo el fallo, a ver si alguno de vosotros me puede echar un cable, y ayudarme a buscar el error.

El error especificamente es que a la hora de ejecutar la consulta ,siempre me da la segunda condición del if, sobre si la consulta se ha hecho con éxito o no, pero siempre me da que no, he probado imprimiendo la consulta para ver si el fallo era de sintaxis o simplemente alguna variable mal nombrada, pero todo bien, hasta he ejecutado la propia consulta que me imprime en la consola SQL del phpmyadmin y me la toma como válida y me registra el usuario.., pero no tengo ni idea de que será. Os dejo el código:

Código:
<?php

	require_once("conexion.php");
	require_once("funciones.php");

	echo "<meta charset='utf-8'/>";

				$usuario = strip_tags(htmlspecialchars($_POST['usuario']));
				$correo = strip_tags(htmlspecialchars($_POST['correo']));
				$skype = strip_tags(htmlspecialchars($_POST['skype']));
				$password = strip_tags(htmlspecialchars($_POST['password']));
				$password2 = strip_tags(htmlspecialchars($_POST['password2']));

					$sql = "SELECT * FROM usuarios WHERE usuario='".$usuario."' ";
						$res = mysql_query($sql);

			if(isset($_POST['envio']))
			{
					if(mysql_fetch_assoc($res))
					{
						echo "Este usuario ya existe.";
					}
					elseif(empty($usario) && empty($password) && empty($correo) && empty($skype))
						{
							echo "Debes rellenar los campos.";	
						}
					elseif(strlen($usuario) < 4)
						{
							echo "El usuario debe contener más de 3 carácteres.";
						}
					elseif(!ValidacionEmail($correo))
						{
							echo "Debes introducir un emial válido.";
						}
					elseif(strlen($password) < 5)
						{
							echo "La contraseña debe contener más de 5 carácteres.";
						}
					elseif($password != $password2)
						{
							echo "Las contraseñas deben coincidir.";
						}
					else
					{
						$query = "INSERT INTO usuarios (usuario, correo, skype, contraseña)
									VALUES ('".mysql_escape_string($usuario)."','".mysql_escape_string($correo)."','".mysql_escape_string($skype)."','".mysql_escape_string($password)."')
									 ";

							if (mysql_query($query)) 
							{
								echo "El usuario fue registrado con éxito.";
							}
							else
							{
								echo "Hubo un error en el registro.";
							}
					}
			}
			else
			{
				echo "<h1>No estás autorizado para ver esta página.</h1>";
			}
?>
PD: El archivo de la conexión está bien incluído, y los datos de la conexión también está todo bien sin error alguno.
PD2: Gracias a todos por echarme un cable. :)
  #2 (permalink)  
Antiguo 03/08/2013, 21:18
 
Fecha de Ingreso: junio-2013
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: [Ayuda][PHP] Error con consulta.

que error te dice ? decime bien que te dice, o sino proba poniendo un echo con la funcion mysql_error()
  #3 (permalink)  
Antiguo 03/08/2013, 21:43
Avatar de rocha7778  
Fecha de Ingreso: mayo-2013
Ubicación: Cartagena Colombia
Mensajes: 79
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: [Ayuda][PHP] Error con consulta.

por favor actualiza tu codigo la clase mysql fun cambiada por mysqli.

http://www.forosdelweb.com/f18/anunc...oleta-1008145/

es mejor trabajar con lo actualizado y no con el codigo viejo, dado que cuando quieras actualizarte, estaras usando siempre las librerias obsoletas y tu código sera vulnerable.

es muy simple intentalo haa y postea como te dice morta2198 el codigo de error, para ayudarte
  #4 (permalink)  
Antiguo 04/08/2013, 00:19
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: [Ayuda][PHP] Error con consulta.

En esta parte cambia el mysql_fetch_assoc por mysql_num_rows:http://www.php.net/manual/en/functio...l-num-rows.php
Código PHP:
Ver original
  1.                     {
  2.                         echo "Este usuario ya existe.";
  3.                     }
En esta seccion cambia el mysql_query por mysql_affected_row:http://www.php.net/manual/en/functio...ected-rows.php
Código PHP:
Ver original
  1. if (mysql_query($query))
  2.                             {
  3.                                 echo "El usuario fue registrado con éxito.";
  4.                             }
  5.                             else
  6.                             {
  7.                                 echo "Hubo un error en el registro.";
  8.                             }
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 04/08/2013, 20:03
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: [Ayuda][PHP] Error con consulta.

Lo peor que se puede hacer es SUPONER que todas las funciones van a devolver TRUE/FALSE, porque es totalmente falso, tanto mysql_query, mysql_fetch_assoc y mysql_num_rows pueden retornar un valor no boleano como puede ser un resource, un array o un numero (según el caso), y false si falla en su procedimiento, en todo caso lo correcto es:

Código PHP:
Ver original
  1. if (mysql_query($res) !== false) {
  2.      echo 'La consulta se realizo con exito';
  3. }else {
  4.      echo 'La consulta no se ejecutó, mysql a devuelto: '.mysql_error();
  5. }
  6.  
  7. if (mysql_fetch_assoc($res) !== false) {
  8.      echo 'La consulta se realizo con exito';
  9. }else {
  10.      echo 'La consulta no se ejecutó, mysql a devuelto: '.mysql_error();
  11. }
  12.  
  13. if (mysql_num_rows($res) > 0) {
  14.      echo 'La consulta se realizo con exito';
  15. }else {
  16.      echo 'La consulta no se ejecutó, mysql a devuelto: '.mysql_error();
  17. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: html, mysql, registro, select, sql, usuarios, variable
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 21:13.