entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Uso de PDO con un login ?

Hola, saludos amigo lector.

Estaba hosteando y testeando mi pagina web que tenia un login que se conectaba a mi base de datos ya hosteada también. Accedía normal, pero cuando quise hacer una consulta desde la misma pagina a ciertos datos de una tabla en mi BD, me mostró un mensaje error junto con mi resultado normal de la pagina. El error decia que mysql_conect() ya era obsoleto y que debia usar mysqli ó PDO.
Entonces yo desde un archivo : conexion.php invocaba la tipica conexion:

mysql_connect("server","user","clave") or die("Error, conexion BD");
mysql_select_db("base datos") or die("Error, selecionar BD");

Ahora mi base de datos manejaba una tabla usuario que contiene campos: nick,clave,edad. Enviaba los datos por un formulario a un archivo validar.php donde hacia la consulta de los datos para declarar la variable $_SESSION['']. Pero claro, utlizaba las funciones de mysql tipicas:

   $nick=$_POST["nick"];
   $clave=$_POST["clave"];

   include("conexion.php");
   $query=mysql_query("select *from usuario where nick='$nick'") or die("Error, select");

   //si obtenemos los datos del usuario...

   if(mysql_num_rows($query)==1){ 
      $result=mysql_fetch_assoc($query);

      //verificamos la edad
      if($result['edad']>=3){
      }
   }

Ahora: Necesito usar PDO preferiblemente para establecer una conexion, hacer la consulta, verificar si devuelve un resultado la consulta y comparar un valor que devuelve esa
consulta.

Alguien podria decirme como deberia quedar esto utilizando PDO ??.
Gracias, saludos.

2 Respuestas

1voto

Dr oscar Puntos3250

Al final la solución a mi problema fue implementar una conexion PDO tal :

  try
{
  $con = new PDO('mysql:host=localhost;dbname=basedatos', 'user', 'contraseña');
  $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
  echo 'Error conectando con la base de datos: ' . $e->getMessage();
}

Y en cuanto a las consultas:

 $nick=$_POST["nick"];
 $clave=$_POST["clave"];
     include("conexion.php");  
    $sql = "SELECT *from usuario WHERE nick = :nick"; //Creamos la select

   $query = $con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
   $query-> bindParam(':nick', $nick); //Substituimos las variables de la SELECT
   $query-> execute(); //Ejecutamos la consulta
   $contador = $query -> rowCount(); //Esta función devuelve el número de resultados que ha devuelto la SELECT
   //si obtenemos los datos del usuario...
   if($contador==1){ 
      //pasamos los valores de la consulta a variable
       $usuarioDB = $query-> fetch(PDO::FETCH_ASSOC); //Guarda los registros que devuelve la SELECT en un array asociativo

    echo "".$usuarioDB['nick']."";

1voto

Leonardo-Tadei Puntos227320

Hola @dr+oscar,

las PDO o PHP Data Object son una capa de abstracción a bases de datos que implementan la estrategia Data Access Object para funcionar, es decir, tienen una sintaxis de Programación Orientada a Objetos en vez de Programación Estructurada como las mysql* (en el medio existen las mysqli* que tienen sintaxis dual POO/PE)

En este enlace te dejo un artículo que compara las mysql_* con las PDO y da ejemplos de uso:
http://jhernandz.es/noticia/consultas-base-datos-desde-php-con-pdo
y acá unos buenos ejemplos de código:
http://www.mclibre.org/consultar/php/lecciones/php_db_pdo.html

Creo que te será útil. Saludos cordiales!

0voto

Dr oscar comentado

Al final busqué en varias fuentes incluyendo la tuya y solucioné :) .

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta