elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects)  (Leído 13,261 veces)
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
[TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects)
« en: 20 Junio 2011, 06:21 am »

TRABAJANDO CON PDO
PHP Data Object



CONTENIDO

          1. CONEXIÓN A LA BASE DE DATOS.
          2. EJECUCIÓN DE QUERYS
               2.1 DIRECTA.
               2.2 RETORNO DE DATOS.
               2.3 MANEJO DE DATOS.
                    2.3.1 ARRAY
                         2.3.1.1 NUMÉRICO.
                         2.3.1.2 ASOCIATIVO.
                         2.3.1.3 NUMÉRICO y ASOCIATIVO.
                    2.3.1
                    2.3.1
          3.
          4.
          5.
          6.
          7.
          ∞. BIBLIOTECA DE CÓDIGO.

Fecha ultima actualización: 20 de Junio de 2011


« Última modificación: 20 Junio 2011, 07:53 am por Shell Root » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects)
« Respuesta #1 en: 20 Junio 2011, 06:36 am »

CONEXIÓN A LA BASE DE DATOS


         Principalmente lo que debemos hacer es realizar una simple conexión a cualquier base de datos, una de las ventajas y caracteristicas que tiene PDO es qué tiene el mismo string de conexión, -por así decirlo-, para cualquier motor de base de datos que está soporta. Aquí veremos algunas de estás conexiones en MySQL y PostgreSQL, para ver la diferencia y la simplicidad.

Con MySQL y PostgreSQL nos conectábamos de la siguiente forma,

Código
  1. # MySQL
  2. mysql_connect("$host", "$usuario", "$contraseña");
  3. mysql_select_db("$baseDatos");
  4.  
  5. # PostgreSQL
  6. pg_connect("host = $host dbname = $baseDatos user = $usuario password = $contraseña");

Ahora con PDO lo hacemos general de la siguiente forma, -sólo cambiaría el driver de conexión-,

Código
  1. #MySQL
  2. $conn = new PDO("mysql:host = $host; dbname = $baseDatos", $usuario, $contraseña);
  3.  
  4. # PostgreSQL
  5. $conn = new PDO("pgsql:host = $host port = $puerto dbname = $baseDatos", $usuario, $contraseña);

Notamos que utiliza la misma estructura para la conexión en cualquiera de los 2 motores de base de datos.

PD: Por alguna extraña razón en la variable de contraseña al ponerla sin la ñ, el foro lo agrega #FAIL!


« Última modificación: 20 Junio 2011, 06:56 am por Shell Root » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects)
« Respuesta #2 en: 20 Junio 2011, 07:04 am »

EJECUCIÓN DE QUERYS

         En la ejecución de querys se pueden definir 2 categorías. DIRECTAS, que es cuando se realiza un INSERT, UPDATE y sabemos que nunca devolverá un dato... y con RETORNO DE DATOS, que es cuando de realiza un SELECT, donde si sabemos que tendremos que manejar registros devueltos por la consulta.

Antes de mirar como se realiza esta acción con PDO miremos como se realizaba con los 2 motores de base de datos que tenemos de ejemplo.
Código
  1. # MySQL
  2. $query = mysql_query( $sql, $cnn );
  3.  
  4. # PostgreSQL
  5. $query = pg_query( $cnn, $sql );


DIRECTA
         Esta es la forma en la que no tendremos interacción de ninguna clase con datos, sólo se ejecutará la query y los posibles valores de retorno sería VERDADERO o FALSO, para identificar el estado de la ejecución de la query. Se realizaría de la siguiente forma,
Código
  1. $cnn->exec("INSERT INTO usuario (id, cedula, nombre) VALUES(1, '1037610909', 'Alex');");

Para este caso podríamos realizar la validación para ver si se ejecuto o no, la query. Así,
Código
  1. $query = $cnn->exec("INSERT INTO usuario (id, cedula, nombre) VALUES(1, '1037610909', 'Alex');");
  2. if ($query !== FALSE){
  3.   # ...
  4. }

RETORNO DE DATOS
         Esta es la forma en la que sí tendremos interacción de con datos que devuelve la consulta, para este caso tendríamos valores de retorno. Se realizaría de la siguiente forma,
Código
  1. $query = $cnn->query("SELECT id, cedula, nombre FROM usuario;");

En el próximo apartado veremos como se manejan los datos de retorno de la query.
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects)
« Respuesta #3 en: 20 Junio 2011, 07:52 am »

MANEJO DE DATOS

         Ahora veremos somo sería la forma en que se retornarían los datos, existen 3 opciones fundamentales para esto, NUMÉRICA, ASOCIATIVA, NUMÉRICA y ASOCIATIVA, cada una de está con una función diferente.

Supongamos que tenemos una base de datos con una tabla de USUARIO con los campos de ID, CEDULA y NOMBRE. En cuya tabla existen un registro con los siguientes valores,

Código
  1. mysql> SELECT id, cedula, nombre FROM usuario;
  2. +----+------------+--------+
  3. | id | cedula     | nombre |
  4. +----+------------+--------+
  5. |  1 | 1030010000 | Alex   |
  6. +----+------------+--------+
  7. 1 ROW IN SET (0.00 sec)

NUMÉRICA
         Esta opción lo que hace es identificar el campo por medio de identificador que en este caso es un número. Por ejemplo, teniendo la base de datos anterior, realicemos un SELECT básico, así.
Código
  1. $sql = "SELECT id, cedula, nombre FROM usuario;";
  2. $query = $conn->query($sql);
  3. while( $fila = $query->fetch(PDO::FETCH_NUM) ){
  4.   $datos[] = $fila;
  5. }

Al mostrar el array deberíamos obtener los siguientes resultados,
Código
  1. Array( [0] => Array( [0] => 1 [1] => 1030010000 [2] => Alex ) )


ASOCIATIVA
         Esta opción lo que hace es identificar el campo por medio de identificador que en este caso sería el nombre del campo. Siguiendo el ejemplo anterior,
Código
  1. $sql = "SELECT id, cedula, nombre FROM usuario;";
  2. $query = $conn->query($sql);
  3. while( $fila = $query->fetch(PDO::FETCH_ASSOC) ){
  4.   $datos[] = $fila;
  5. }

Al mostrar el array deberíamos obtener los siguientes resultados,
Código
  1. Array( [0] => Array( ['id'] => 1 ['cedula'] => 1030010000 ['nombre'] => Alex ) )


NUMÉRICA y ASOCIATIVA
         En esta opción se unen las dos funciones anteriores en uno. Miremos el ejemplo en base con el ejemplo anterior,

Código
  1. $sql = "SELECT id, cedula, nombre FROM usuario;";
  2. $query = $conn->query($sql);
  3. while( $fila = $query->fetch(PDO::FETCH_BOTH) ){
  4.   $datos[] = $fila;
  5. }

Al mostrar el array deberíamos obtener los siguientes resultados,
Código
  1. Array( [0] => Array( ['id'] => 1 [0] => 1 ['cedula'] => 1030010000 [1] => 1030010000 ['nombre'] => Alex [2] => Alex ) )


NOTA GENERAL: El primer ARRAY es de los registros de la consulta y el segundo ARRAY, es donde tendrá los valores.
« Última modificación: 22 Agosto 2015, 02:02 am por Shell Root » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[TUTORIAL]Crear Facturas/Pedidos/Etiquetas co Data Report desde Visual Basic 6.0 « 1 2 3 4 »
Programación Visual Basic
Hans el Topo 37 141,214 Último mensaje 25 Noviembre 2017, 10:22 am
por luke21
index * objects
Programación Visual Basic
zXxOsirisxXz 7 2,739 Último mensaje 17 Enero 2008, 18:14 pm
por zXxOsirisxXz
Ayuda: Local data exceeds data segment size limit
Programación C/C++
mjpedia 2 3,647 Último mensaje 4 Junio 2010, 22:10 pm
por Gallu
[SFML 2.0] Threading or Objects.Update() ?
Programación C/C++
X3R4CK3R 0 1,591 Último mensaje 8 Agosto 2012, 19:56 pm
por X3R4CK3R
sqlmap inyección con --data del tipo multipart/form-data
Hacking
ukraniano 1 3,312 Último mensaje 24 Mayo 2014, 06:37 am
por zxero22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines