Foros del Web » Programando para Internet » PHP »

PHP no me compara usuario con base de datos?

Estas en el tema de PHP no me compara usuario con base de datos? en el foro de PHP en Foros del Web. Hola, tengo un código que se encarga de comprobar que el usuario introducido al registrarse. Cuando el usuario ya existe en la base de datos, ...
  #1 (permalink)  
Antiguo 20/02/2013, 13:34
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
PHP no me compara usuario con base de datos?

Hola, tengo un código que se encarga de comprobar que el usuario introducido al registrarse. Cuando el usuario ya existe en la base de datos, no deja registrar. Esa sería la función, pero mi código no lo realiza. Aquí dejo el código, espero ayuda, muchas gracias!

Código:
$sql = sqlsrv_query($conn,"SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(sqlsrv_num_rows($sql) > 0) { 
                echo "El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>"; 
            }else {
He comprobado que no compara con los usuarios de la base de datos, ya que he podido crear dos usuarios con el mismo nombre. Me pueden decir que falla?
  #2 (permalink)  
Antiguo 20/02/2013, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: PHP no me compara usuario con base de datos?

Si no depuras tus consultas es imposible que nosotros adivinemos las causas a simple vista.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/02/2013, 14:13
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
Respuesta: PHP no me compara usuario con base de datos?

Cita:
Iniciado por pateketrueke Ver Mensaje
Si no depuras tus consultas es imposible que nosotros adivinemos las causas a simple vista.
Lo siento, intentaré incluir todo lo relacionado:

Código:
$usuario_nombre =($_POST['usuario_nombre']); 
            $usuario_clave = ($_POST['usuario_clave']); 
            $usuario_email = ($_POST['usuario_email']);
			
            // comprobamos que el usuario ingresado no haya sido registrado antes
            $sql = sqlsrv_query($conn,"SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(sqlsrv_num_rows($sql) > 0) { 
                echo "El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>"; 
            }else {
                $usuario_clave = md5($usuario_clave); // encriptamos la contraseña ingresada con md5 
                // ingresamos los datos a la BD 
                $reg = sqlsrv_query($conn,"INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', GETDATE())"); 
                if($reg) { 
                    echo "Datos ingresados correctamente."; 
                }else { 
                    echo "ha ocurrido un error y no se registraron los datos.";
					die( print_r( sqlsrv_errors(), true));
                } 
            } 
        } 
    }else {
FORMULARIO
Código:
?>
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
        <label>Usuario:</label><br /> 
        <input type="text" name="usuario_nombre" maxlength="15" /><br /> 
        <label>Contraseña:</label><br /> 
        <input type="password" name="usuario_clave" maxlength="15" /><br /> 
        <label>Confirmar Contraseña:</label><br /> 
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br /> 
        <label>Email:</label><br /> 
        <input type="text" name="usuario_email" maxlength="50" /><br /> 
        <input type="submit" name="enviar" value="Registrar" /> 
        <input type="reset" value="Borrar" /> 
    </form> 
<?php 
    } 
?>
TABLA DE LA BASE DE DATOS

[URL=http://imageshack.us/photo/my-images/844/capturarny.png/][IMG]http://img844.imageshack.us/img844/2561/capturarny.png[/IMG][/URL]

[URL="http://imageshack.us/photo/my-images/844/capturarny.png/"]http://imageshack.us/photo/my-images/844/capturarny.png/[/URL]

Creo que eso es todo, ayuda? Gracias
  #4 (permalink)  
Antiguo 20/02/2013, 14:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: PHP no me compara usuario con base de datos?

No, eso no ayuda mucho, depurar no significa eso.

El punto, es que cuando ejecutes la consulta que dices anda mal debes en cierta medida verificar si existió un error, o extraer el resultado para compara, un simple conteo de columnas no sirve de mucho.

Además siempre es útil imprimir la consulta antes de ejecutarla, para ver si está bien escrita, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 20/02/2013, 14:20
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
Respuesta: PHP no me compara usuario con base de datos?

Cita:
Iniciado por pateketrueke Ver Mensaje
No, eso no ayuda mucho, depurar no significa eso.

El punto, es que cuando ejecutes la consulta que dices anda mal debes en cierta medida verificar si existió un error, o extraer el resultado para compara, un simple conteo de columnas no sirve de mucho.

Además siempre es útil imprimir la consulta antes de ejecutarla, para ver si está bien escrita, etc.
A ver, no aparece ningún error. En el formulario, al insertar los datos, se introducen en la base de datos y listo. La comprobación de si existe un usuario en la base de datos, se la salta porque no detecta ningún usuario con el nombre introducido en el formulario.

Lo siento, soy principiante en esto =(
  #6 (permalink)  
Antiguo 20/02/2013, 14:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: PHP no me compara usuario con base de datos?

Bien, pues si el problema es en la verificación ahí es dónde debes doblar esfuerzos para ver que sucede.

Imprimir la consulta es fácil.
Código PHP:
$consulta "SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'";

echo 
"SQL: $consulta<br>";

// ... 
Ahora, ¿la sintaxis de la consulta es correcta?

Sería interesante ver lo que imprime.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 20/02/2013, 14:44
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
Respuesta: PHP no me compara usuario con base de datos?

Cita:
Iniciado por pateketrueke Ver Mensaje
Bien, pues si el problema es en la verificación ahí es dónde debes doblar esfuerzos para ver que sucede.

Imprimir la consulta es fácil.
Código PHP:
$consulta "SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'";

echo 
"SQL: $consulta<br>";

// ... 
Ahora, ¿la sintaxis de la consulta es correcta?

Sería interesante ver lo que imprime.
Gracias por tu paciencia. El resultado del echo es:

Código:
Connection established.
SQL: Resource id #2
Datos ingresados correctamente.
El código que lo ejecuta es:
Código:
$sql = sqlsrv_query($conn,"SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");
			echo "SQL: $sql<br>";
  #8 (permalink)  
Antiguo 20/02/2013, 14:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: PHP no me compara usuario con base de datos?

Creo que interpretaste mal mi ejemplo, sólo debes imprimir la cadena de la consulta, no el resultado de la ejecución de la misma.

El código que te sugerí no debe llevar sqlsrv_query() en ningún lado, mira bien las diferencias.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 20/02/2013, 14:54
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
Respuesta: PHP no me compara usuario con base de datos?

Cita:
Iniciado por pateketrueke Ver Mensaje
Creo que interpretaste mal mi ejemplo, sólo debes imprimir la cadena de la consulta, no el resultado de la ejecución de la misma.

El código que te sugerí no debe llevar sqlsrv_query() en ningún lado, mira bien las diferencias.
Ahora?

Código:
Connection established.
SQL: SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='prueba'
Datos ingresados correctamente.
Código:
$consulta = "SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"; 

echo "SQL: $consulta<br>";
  #10 (permalink)  
Antiguo 20/02/2013, 15:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: PHP no me compara usuario con base de datos?

¡Perfecto!

Al parecer la consulta es correcta en sintaxis, ahora hay que ver en que parte es que la comprobación entonces no surte efecto, porque es un hecho que funciona.

Prueba así.
Código PHP:
$consulta "SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'";
echo 
"SQL: $consulta<br>";

$sql sqlsrv_query($conn,$consulta);

echo (int) 
sqlsrv_num_rows($sql);

print_r(sqlsrv_errors()); 
¿Qué sucede ahora?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 20/02/2013, 15:08
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
Respuesta: PHP no me compara usuario con base de datos?

Cita:
Iniciado por pateketrueke Ver Mensaje
¡Perfecto!

Al parecer la consulta es correcta en sintaxis, ahora hay que ver en que parte es que la comprobación entonces no surte efecto, porque es un hecho que funciona.

Prueba así.
Código PHP:
$consulta "SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'";
echo 
"SQL: $consulta<br>";

$sql sqlsrv_query($conn,$consulta);

echo (int) 
sqlsrv_num_rows($sql);

print_r(sqlsrv_errors()); 
¿Qué sucede ahora?
Okay, me muestra esto:

[CODE]Connection established.
SQL: SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='manuel'
0Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -50
Código:
 => -50 [2] => This function only works with statements that have static or keyset scrollable cursors. [message] => This function only works with statements that have static or keyset scrollable cursors. ) ) Datos ingresados correctamente.
  #12 (permalink)  
Antiguo 20/02/2013, 15:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: PHP no me compara usuario con base de datos?

Pues al parecer sqlsrv_errors() si te está arrojando errores, ahí tienes las pistas suficientes para comenzar a investigar el tema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 20/02/2013, 15:22
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
Respuesta: PHP no me compara usuario con base de datos?

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues al parecer sqlsrv_errors() si te está arrojando errores, ahí tienes las pistas suficientes para comenzar a investigar el tema.
Ok, buscaré, muchas gracias, si encuentro la solución los postearé aquí, muchas gracias de verdad.
  #14 (permalink)  
Antiguo 20/02/2013, 15:45
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 6 años, 9 meses
Puntos: 2
Respuesta: PHP no me compara usuario con base de datos?

Solucionado! Dejo el código que me sirvió:

Código:
$stmt = sqlsrv_query( $conn, "SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'" , array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
			 $row_count = sqlsrv_num_rows( $stmt );
			 echo "SQL: $row_count<br>";
El error estaba en aquí:
sqlsrv_num_rows requires a static or keyset cursor, and will return false if you use a forward cursor or a dynamic cursor. (A forward cursor is the default.)

No tengo ni idea que es "static cursor" o "keyset cursor" pero se soluciona añadiendo:
Código:
 array( "Scrollable" => SQLSRV_CURSOR_KEYSET )
Al final de la acción a ejecutar con la orden "sqlsrv_query()"

Ahora PHP compara con la base de datos y si existe un usuario con el mismo nombre que se intenta añadir a la base de datos, salta el "else" que detiene la ejecución.

Muchas gracias paketetrueke!

PD: ODIO MSSQL, Y EN INTERNET NO HAY CASI NADA ACERCA. PERO ESTOY OBLIGADO A USARLO.
  #15 (permalink)  
Antiguo 28/09/2015, 16:06
 
Fecha de Ingreso: abril-2004
Ubicación: Cusco
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: PHP no me compara usuario con base de datos?

Tengo un problema con sqlsrv_num_rows

Este resultado muestra: 5
include("conexion.php");
$consulta = "SELECT usuario_codigo, usuario_nombre, usuario_tipo FROM usuarios WHERE usuario_tipo='".$tipoUsuario."'";
$sql = sqlsrv_query($conn,$consulta);
$num_registros = sqlsrv_num_rows($sql);
echo $num_registros;

Este resultado muestra: "Warning: sqlsrv_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\org\Modulo\MenuPrincipal.php on line 4"
include("conexion.php");
$consulta = "EXEC Muestra_TipoUsuario '".$tipoUsuario."';";
$sql = sqlsrv_query($conn,$consulta);
$num_registros = sqlsrv_num_rows($sql);
echo $num_registros;

Alquien por favor puede ayudarme porque no funciona con Procedimientos almacenados

Etiquetas: select, sql, usuario, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:45.