Foros del Web » Programando para Internet » PHP »

Login Duda

Estas en el tema de Login Duda en el foro de PHP en Foros del Web. Hola, al hacer un login en PDO, he visto que se podria hacer de dos maneras diferentes: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $login = ...
  #1 (permalink)  
Antiguo 11/09/2013, 18:19
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 10 años, 7 meses
Puntos: 3
Login Duda

Hola, al hacer un login en PDO, he visto que se podria hacer de dos maneras diferentes:

Código PHP:
Ver original
  1. $login = $connection->prepare("SELECT username FROM user WHERE username = :username AND password = :password");
  2.             $login->bindParam(':username',$_POST['username']);
  3.             $login->bindParam(':password',$_POST['password']);
  4.             $login->execute();
  5.             if($login = $login->fetch(PDO::FETCH_ASSOC)):
  6.                 echo 'Datos correctos';
  7.             else:
  8.                 echo 'Datos incorrectos';
  9.             endif;

Código PHP:
Ver original
  1. $login = $connection->prepare("SELECT COUNT(*) username FROM user WHERE username = :username AND password = :password");
  2.             $login->bindParam(':username',$_POST['username']);
  3.             $login->bindParam(':password',$_POST['password']);
  4.             $login->execute();
  5.             if($login->fetchColumn() > 0):
  6.                 echo 'Datos correctos';
  7.             else:
  8.                 echo 'Datos incorrectos';
  9.             endif;

Queria saber cual es la forma que menos consume ram, o la forma mas eficas o menos.

Cuando utilizaba MySQLi de procedimiento tambien se podria hacer utilizando mysqli_fetch_assoc o mysqli_nums_row (Cuenta el numero de filas afectada)

En este caso es lo mismo, en el primero utlizo fetch assoc y en el segundo cuento el numero de filas afectada y si el numero de filas afectadas es mayor a 0, los datos son correctos

Muchas gracias
  #2 (permalink)  
Antiguo 11/09/2013, 20:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Login Duda

Da igual lo que termines usando.

No hay que ser religioso en "siempre usar lo mejor" porque todo es subjetivo, si el diseño de tu BD es malo entonces la forma que usa menos RAM es trivial, porque sencillamente tu diseño de la BD está mal así que no puedes esperar buenos resultados.

Pensar de ese modo es un síntoma de optimización prematura, muy mal si vas comenzando un proyecto porque te hace perder el piso en trivialidades como estas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/09/2013, 21:06
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Login Duda

Hola, puedes revisar estas funciones

memory_get_usage();
microtime(true);

Normalmente, las diferencias son despreciables, menos de 1 microsegundo en tiempo con tablas de 50000 registros, a menos que seas muuuuuuuuuuuy grande.
y en recursos, depende del script, tambien con diferencias muy pequeñas.

Has unas pruebas.

Saludos
  #4 (permalink)  
Antiguo 12/09/2013, 05:31
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 10 años, 7 meses
Puntos: 3
Respuesta: Login Duda

Gracias
Una cosa, en el primero ejemplo para mostrar por ejemplo el usuario tendria que hacer $login['username'] pero en el segundo ejemplo no consigo hacerlo.
  #5 (permalink)  
Antiguo 12/09/2013, 07:42
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Login Duda

El segundo ejemplo muestra el numero de filas obtenidas por la consulta, en caso de que no se obtienen filas, imprime un nensaje de error y rn caso de que si, recoges los resultados en un array, ya sea numerico, asociativo o ambos.

Edit: error mio, el fetchcolum vendria siendo el equivalente a mysql_fetch_row no de mysql_num_rows.
Asi que si quieres la primera columna usa $asdf= $login->fetchColumn(0); echo $asdf;
Para obtener el numero de filas afectadas usa rowCount
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Última edición por xSkArx; 12/09/2013 a las 08:03
  #6 (permalink)  
Antiguo 12/09/2013, 08:03
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 10 años, 7 meses
Puntos: 3
Respuesta: Login Duda

Entonces cada vez que quiera cojer un dato utilizo esto:
Tus datos guardados en la base de dato son:

Código PHP:
Ver original
  1. <?php
  2. echo 'Usuario: '.$usuario = $login->fetchColumn(3).$usuario;
  3. echo 'Contraseñá: '.$password = $login->fetchColumn(3).$password;
  4. echo 'Ip: '.$ip = $login->fetchColumn(3).$ip;
  5. ?>
¿Correcto no?
  #7 (permalink)  
Antiguo 12/09/2013, 08:05
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Login Duda

Ya probaste ese código que estas pasando? Funciona?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #8 (permalink)  
Antiguo 12/09/2013, 08:06
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 10 años, 7 meses
Puntos: 3
Respuesta: Login Duda

Entoncres, creo que es mas facil cuando tenga que imprimir algun dato, utilizar
Código PHP:
Ver original
  1. $login->fetch(PDO::FETCH_ASSOC);
  #9 (permalink)  
Antiguo 12/09/2013, 08:08
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Login Duda

Segun lo que lei en el manual, si, pero que alguien que sepa mas de pdo pueda decir si esta.bien o no.
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #10 (permalink)  
Antiguo 12/09/2013, 08:10
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 10 años, 7 meses
Puntos: 3
Respuesta: Login Duda

Cita:
Iniciado por Strings Ver Mensaje
Entonces cada vez que quiera cojer un dato utilizo esto:
Tus datos guardados en la base de dato son:

Código PHP:
Ver original
  1. <?php
  2. echo 'Usuario: '.$usuario = $login->fetchColumn(3).$usuario;
  3. echo 'Contraseñá: '.$password = $login->fetchColumn(3).$password;
  4. echo 'Ip: '.$ip = $login->fetchColumn(3).$ip;
  5. ?>
¿Correcto no?
Ya solucione el problema, Entonces usare ->fetchColumn() cuando no tenga que imprimir algun dato de la base de dato y ->fetch(PDO::FETCH_ASSOC); cuando si tenga que imprimir algun dato

Etiquetas: login, mysql, select
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 08:41.