Autor
|
Tema: [TUTORIAL] TRABAJANDO CON PDO (PHP Data Objects) (Leído 13,447 veces)
|
Shell Root
|
TRABAJANDO CON PDOPHP 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
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
Shell Root
|
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,# MySQL # PostgreSQL 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-, #MySQL $conn = new PDO("mysql:host = $host; dbname = $baseDatos", $usuario, $contraseña); # PostgreSQL $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
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
Shell Root
|
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.
# MySQL # PostgreSQL
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,$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í,$query = $cnn->exec("INSERT INTO usuario (id, cedula, nombre) VALUES(1, '1037610909', 'Alex');"); if ($query !== FALSE){ # ... }
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,$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
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
Shell Root
|
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,mysql> SELECT id, cedula, nombre FROM usuario; +----+------------+--------+ | id | cedula | nombre | +----+------------+--------+ | 1 | 1030010000 | Alex | +----+------------+--------+ 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í.
$sql = "SELECT id, cedula, nombre FROM usuario;"; $query = $conn->query($sql); while( $fila = $query->fetch(PDO::FETCH_NUM) ){ $datos[] = $fila; }
Al mostrar el array deberíamos obtener los siguientes resultados,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,$sql = "SELECT id, cedula, nombre FROM usuario;"; $query = $conn->query($sql); while( $fila = $query->fetch(PDO::FETCH_ASSOC) ){ $datos[] = $fila; }
Al mostrar el array deberíamos obtener los siguientes resultados,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,$sql = "SELECT id, cedula, nombre FROM usuario;"; $query = $conn->query($sql); while( $fila = $query->fetch(PDO::FETCH_BOTH) ){ $datos[] = $fila; }
Al mostrar el array deberíamos obtener los siguientes resultados,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
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
|
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
|
143,376
|
25 Noviembre 2017, 10:22 am
por luke21
|
|
|
index * objects
Programación Visual Basic
|
zXxOsirisxXz
|
7
|
2,947
|
17 Enero 2008, 18:14 pm
por zXxOsirisxXz
|
|
|
Ayuda: Local data exceeds data segment size limit
Programación C/C++
|
mjpedia
|
2
|
3,994
|
4 Junio 2010, 22:10 pm
por Gallu
|
|
|
[SFML 2.0] Threading or Objects.Update() ?
Programación C/C++
|
X3R4CK3R
|
0
|
1,822
|
8 Agosto 2012, 19:56 pm
por X3R4CK3R
|
|
|
sqlmap inyección con --data del tipo multipart/form-data
Hacking
|
ukraniano
|
1
|
3,691
|
24 Mayo 2014, 06:37 am
por zxero22
|
|