Sunteți pe pagina 1din 3

Conexin a base de datos

Para ello, lo primero ser crear la base de datos MySQL en el servidor, yo he creado una
base de datos llamada Tutorial PDO y voy a poner una sola tabla que se llame Usuarios
(por ejemplo, puedes poner otras), voy a ponerle dos columnas, un Id de tipo Int, 10 de
longitud, clave primaria y auto-increment; la segunda columna va a llamarse Nombre, un
VARCHAR
de
longitud
10:

Hecho esto procederemos a insertar los datos, yo voy a poner dos Nombres: Javier y Juan,
el Id se pone solo.
Ahora pasamos a lo que de verdad es objeto de este tutorial: la programacin en PHP.
Tengo que admitir que la primera vez que vi el Api de PDO me pareci complejsima, pero
realmente no es tan difcil, as que si en un principio no entiendes por qu pongo algunas
cosas, no dudes en preguntar.
Bien, vamos a ver cmo se hace una conexin a una base de datos con MySQL normal (el
de toda la vida):
1 <?php
2 mysql_connect('localhost', 'username', 'password') or die ("Fallo.");
3
?>

Donde localhost, username y password seran el servidor, el nombre de usuario del


servidor, y la contrasea del mismo, respectivamente. Esto est muy bien y es muy sencillo
de recordar, pero con PDO se hace de otra manera, que quiz parezca algo ms complicado
al principio pero al fin y al cabo igual de intuitiva:
1 <?php
$conn = new PDO('mysql:host=localhost;dbname=mibasededatos', $usuario,
2
$password);
3
?>

Aunque parezca raro realmente es muy sencillo: creamos con el new una instancia de
clase PDO (lo que nos permitir usar varias a la vez), definimos el tipo de base de datos con
mysql:, el servidor localhost (en este caso), el nombre de la base de datos
dbname=mibasededatos, y despus usando variables (se puede hacer sin), el usuario y la
contrasea del servidor de bases de datos.

Como puede haber errores y tenemos que controlarlos mediante el uso de trycatch(){}
de la siguiente manera:
1
2
3
4
5
6
7
8

<?php
try{
$conn = new PDO('mysql:host=localhost;dbname=mibasededatos',
$usuario, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo "ERROR: " . $e->getMessage();
}
?>

De esta manera se conecta a la base de datos y en caso de que no pueda saca el error con un
echo. Se puede ver que el try..catch hace la funcin del or die de la sintaxis habitual de PHP
y MySQL.
Consulta a base de datos
. Primero veamos cmo se hace en MySQL y PHP normal, el de toda la vida:
1 <?php
$conexion = mysql_connect('localhost', 'usuario', 'contrasea') or
2
die('Could not connect: ' . mysql_error());
3 mysql_select_db('bd', $conexion);
4 $sql = mysql_query("SELECT * from usuarios");
5 while($columna = mysql_fetch_array($sql)){
6
echo $columna["Nombre"];
7
}
8
?>

Todo esto dejando de lado aspectos de seguridad, ya que esto podra ser hackeable. En
PDO se hace de una manera completamente distinta pero a la vez mucho ms segura,
haciendo uso de los prepared statements, con el fin de que nuestra web sea ms difcil de
acceder. Se hace de la siguiente manera:
01
02
03 try{

<?php
$nombre = "Juan";

$conn = new PDO('mysql:host=localhost;dbname=basededatos',


$usuario, $contra);
05
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
06
$sql = $conn->prepare('SELECT * FROM usuarios WHERE nombre =
07
:Nombre');
08
$sql->execute(array('Nombre' => $nombre));
09
$resultado = $sql->fetchAll();
10
11
foreach ($resultado as $row) {
04

12
13
14
15
16
17

echo $row["Id"];
}
}catch(PDOException $e){
echo "ERROR: " . $e->getMessage();
}
?>

Se ve perfectamente que es distinto, que se hace de otra manera, pero realmente no es tan
complicado, he aprovechado la tabla que cree en la primera parte del tutorial.
Pasamos a explicar un poco el cdigo en detalle: primero hemos usado el mtodo
prepare, de la funcin conn, definida antes, y le hemos pasado la consulta como
parmetro, cualquier consulta SQL, no hace falta que sea tan sencilla como esta, pero
donde ira la variable Nombre, definida antes, he puesto :Nombre, y le he pasado eso
como parmetro en un array dentro del execute en la lnea siguiente (la lnea 8). Ms tarde
he hecho un fetch para que me devuelva los datos de la consulta y para acabar, un foreach
que imprime el resultado.
Cabe destacar el uso del fetch, ya que esta no es la nica manera de usarlo en PDO. Si no se
le pasa nada como parmetro, ste devolver un array, pero tambin podemos definirlo para
que devuelva un objeto, una instancia de clase, etc. Para esto solo tendremos que ponerle
como parmetro lo siguiente:

PDO::FETCH_ASSOC: Es el que viene por defecto, que devuelve un array. Es el


que se usa en este ejemplo.

PDO::FETCH_BOTH: que devuelve un array de otra manera (no voy a entrar muy
en detalle, que el tutorial es para aprender lo bsico).

PDO::FETCH_BOUND

PDO::FETCH_CLASS

PDO::FETCH_OBJ

Finalmente, resta decir que para hacer otro tipo de consultas (INSERT, DELETE o
UPDATE), se hace de la misma manera.
Llegamos hasta el final de esta tercera parte del tutorial de PDO en PHP, en la ltima parte
(la siguiente), har un vdeotutorial y lo subir a youtube con todo lo que hemos aprendido
en esta serie.

S-ar putea să vă placă și