Manipulación de base de datos
Contents
Manipulación de base de datos#

Manipulación de base de datos con PDO en PHP 7.4
Índice
Conexión SQLITE 3#
Pasos iniciales:
Primero tenemos que instalar sqlite3 en nuestro sistema:
sudo apt install php7.4-sqlite3
Luego localizamos el archivo php.ini que suele estar en /etc/php/7.4/ y dentro de las carpetas apache2 y cli encontraremos estos archivos.
Editamos y buscamos las líneas que ponen
;extension=pdo_sqlite
y;extension=sqlite
si tienen un ; lo quitamos para habilitarlas.Conectar a una base de datos SQLite 3:
1<?php
2 try{
3 // realizamos la conexion con el motor sqlite y apuntamos directamente a la base de datos:
4 $db = new PDO('sqlite:datos.sqlite');
5 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
6 $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
7
8 echo "Conexión realizada con éxito";
9 }catch(Exception $e){
10 echo "Error de conexión: " . $e->getMessage();
11 }
12 // para cerrar la conexión:
13 $con = null;
14?>
Conexión MySQL#
Pasos iniciales:
Primero tenemos que instalar sqlite3 en nuestro sistema:
sudo apt install php7.4-mysql
Luego localizamos el archivo php.ini que suele estar en /etc/php/7.4/ y dentro de las carpetas apache2 y cli encontraremos estos archivos.
Editamos y buscamos las líneas que ponen
;extension=pdo_mysql
si tienen un ; lo quitamos para habilitarlas.
1<?php
2 // preparamos los datos del servidor:
3 $servidor = "localhost";
4 $usuario = "guillermo";
5 $clave = "guillermo";
6 try{
7 // preparamos la conexión eligiendo el motor mysql:
8 $conn = new PDO("mysql:host=$servidor;dbname=prueba", $usuario, $clave);
9 // realizamos la conexión:
10 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
11 echo "Conexión realizada con éxito";
12 }catch(Exception $e){
13 echo "Error de conexión: " . $e->getMessage();
14 }
15 // para cerrar la conexión:
16 $conn = null;
17?>
Conexión SQL SERVER#
Para realizar la conexión a SQL SERVER:
Instalamos el driver ODBC: https://www.microsoft.com/en-us/download/details.aspx?id=36434
Descargamos el controlador para PHP: https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15#download
Se extraen las librerías .dll en la carpeta ext/ del directorio php/ que tenganmos.
Se edita php.ini para que reconozca las librerías y se reinicia el servidor:
extension=php_sqlsrv_74_ts_x64.dll
extension=php_sqlsrv_74_nts_x64.dll
extension=php_pdo_sqlsrv_74_nts_x64.dll
extension=php_pdo_sqlsrv_74_ts_x64.dll
crear un usuario que pueda hacer login en el servidor DDBB y permitr el acceso desde SQL Server en lugar de Windows Authorization.
Luego podemos crear el conector:
1<?php
2 // preparamos los datos del servidor:
3 $servidor = "NOMBREEQUIPO"; // no vale localhost.
4 $usuario = "guillermo";
5 $clave = "guillermo";
6 try{
7 // preparamos la conexión eligiendo el motor mysql:
8 $conn = new PDO("sqlsrv:server=$servidor;database=prueba", $usuario, $clave);
9 // realizamos la conexión:
10 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
11 echo "Conexión realizada con éxito";
12 }catch(Exception $e){
13 echo "Error de conexión: " . $e->getMessage();
14 }
15
16 // para cerrar la conexión:
17 $conn = null;
18?>
Operaciones CRUD#
Crear base de datos#
1<?php
2 $servidor = "localhost";
3 $usuario = "guillermo";
4 $clave = "guillermo";
5 // ignoramos elegir la base de datos al preparar conexión::
6 $conn = new PDO("mysql:host=$servidor", $usuario, $clave);
7 // realizamos la conexión:
8 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
9 // preparamos la consulta:
10 $sql = "CREATE DATABASE pruebaSQL";
11 // realizamos la consulta:
12 $conn->exec($sql);
13
14 echo "Base de datos creada con éxito";
15 $conn = null;
16?>
Crear una tabla#
1<?php
2 $servidor = "localhost";
3 $usuario = "guillermo";
4 $clave = "guillermo";
5 $base = "prueba";
6
7 $conn = new PDO("mysql:host=$servidor;dbname=$base", $usuario, $clave);
8
9 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
10
11 $sql = "CREATE TABLE agenda(
12 id INT(10) AUTO_INCREMENT PRIMARY KEY,
13 nombre VARCHAR(30) NOT NULL,
14 edad INT(10) NOT NULL
15 )";
16
17 $conn->exec($sql);
18
19 echo "Tabla creada con éxito";
20 $conn = null;
21?>
Insertar registros#
1<?php
2 $servidor = "localhost";
3 $usuario = "guillermo";
4 $clave = "guillermo";
5 $base = "prueba";
6
7 $conn = new PDO("mysql:host=$servidor;dbname=$base", $usuario, $clave);
8
9 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
10
11 $sql = "INSERT INTO agenda (nombre, edad) values ('Alfredo', 30)";
12
13 $conn->exec($sql);
14
15 echo "Inserción realizada con éxito";
16 $conn = null;
17?>
Inserciones y actualizaciones múltiples#
1<?php
2 $servidor = "localhost";
3 $usuario = "guillermo";
4 $clave = "guillermo";
5 $base = "prueba";
6
7 $conn = new PDO("mysql:host=$servidor;dbname=$base", $usuario, $clave);
8
9 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
10 // Preparar consulta para separar parametros:
11 $sql = $conn->prepare("INSERT INTO agenda (nombre, edad) VALUES (:nombre, :edad)");
12 // preparar parametros:
13 $sql->bindParam(':nombre', $nombre);
14 $sql->bindParam(':edad', $edad);
15
16 // insertar mas de un registro a la vez:
17 $nombre = "Antonio";
18 $edad = 38;
19 $sql->execute();
20
21 $nombre = "Eustaquia";
22 $edad = 73;
23 $sql->execute();
24
25 echo "Inserciones realizadas correctamente";
26 $conn = null;
27?>
Atención
los bindParams se pueden usar en operaciones INSERT y en operaciones UPDATE
Leer registros#
1<?php
2 $servidor = "localhost";
3 $usuario = "guillermo";
4 $clave = "guillermo";
5 $base = "prueba";
6
7 $conn = new PDO("mysql:host=$servidor;dbname=$base", $usuario, $clave);
8
9 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
10 // Preparar consulta:
11 $sql = $conn->query("SELECT * FROM agenda");
12 // Ejecutar consulta, ,fetch para registros individuales y fetchAll para multiples:
13 $sql = $sql->fetchAll(PDO::FETCH_ASSOC); // usar el parametro FETCH_ASSOC imprime de forma limpia.
14 // Recorrer todos los datos:
15 foreach($sql as $data){
16 echo "- " . $data['nombre'] . "\n";
17 }
18
19 $conn = null;
20?>
Borrar registros#
1<?php
2 $servidor = "localhost";
3 $usuario = "guillermo";
4 $clave = "guillermo";
5 $base = "prueba";
6
7 $conn = new PDO("mysql:host=$servidor;dbname=$base", $usuario, $clave);
8
9 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
10 // Preparar consulta:
11 $sql = "DELETE FROM agenda WHERE id=1";
12 // ejecutar consulta:
13 $conn->exec($sql);
14
15 echo "Registro eliminado";
16
17 $con = null;
18?>
Actualizar registros#
1<?php
2 $servidor = "localhost";
3 $usuario = "guillermo";
4 $clave = "guillermo";
5 $base = "prueba";
6
7 $conn = new PDO("mysql:host=$servidor;dbname=$base", $usuario, $clave);
8
9 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
10 // Preparar consulta:
11 $sql = "UPDATE agenda SET nombre='Elvira', edad=32 WHERE id=2";
12 // preparar estado:
13 $stmt = $conn->prepare($sql);
14 // ejecutar consulta:
15 $stmt->execute();
16
17 echo "Registro actualizado";
18
19 $con = null;
20?>