En este artículo, discutiremos PDO en PHP en detalle.
Hay tres opciones principales para
PHP
<?php try { $dbhost = 'localhost'; $dbname='gfg'; $dbuser = 'root'; $dbpass = ''; $connect = new PDO( "mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); } catch (PDOException $e) { echo "Error : " . $e->getMessage() . "<br/>"; die(); } $count = $connect->exec("DELETE FROM employee WHERE emp_id = 123 "); echo("Number of rows to be deleted from the employee table is: ". $count); ?>
ting a un servidor de base de datos MySQL .
- Procedimiento MySQLi
- MySQLi orientado a objetos
- PDO (objetos de datos PHP)
MySQLi procesal y MySQLi orientado a objetos solo admiten la base de datos MySQL , pero PDO es un método avanzado junto con MySQL que admite Postgres, SQLite, Oracle y MS SQL Server.
PDO es más seguro que las dos primeras opciones y también es más rápido en comparación con MySQLi procedimental y MySQLi orientado a objetos.
PDO es una capa de acceso a bases de datos que proporciona una interfaz rápida y consistente para acceder y administrar bases de datos en aplicaciones PHP. Cada DBMS tiene un controlador PDO específico que debe instalarse cuando usa PDO en aplicaciones PHP.
Simplifica las operaciones de la base de datos, incluyendo:
- Creando conexión de base de datos
- Ejecutando consultas
- Manejo de errores
- Cerrar las conexiones de la base de datos
Cuando queremos conectar PHP y MySQL, debemos seguir 3 pasos:
- Conexión con la base de datos
- Ejecutar consulta SQL
- Cerrar la conexión a la base de datos
Pasos para la conexión mediante PDO.
Conexión:
En este paso, nos conectamos con la base de datos.
$conn = new PDO($db_name,$username,$password);
Cuando queremos la conexión entre PHP y MySQL usando PDO , necesitamos crear un objeto de la clase PDO .
$db_name = "mysql:host=localhost;dbname:gfg";
Nota: $db_name contiene la siguiente información.
Ejecutar consulta SQL: para ejecutar la consulta SQL podemos usar dos métodos:
- consulta():
$sql = $conn->query("select * from students");
- preparar():
$sql = $conn->prepare("select * from students");
Nota: El método prepare() es más seguro que el método query().
Cierra la conexión:
Para cerrar la conexión de la base de datos usando PDO.
$conn = null;
Parámetros: Contiene los siguientes parámetros.
- dsn: Contiene la información referente a la conexión a la base de datos.
- usuario: Contiene el nombre de usuario.
- contraseña: Contiene la contraseña de la base de datos.
Valor devuelto:
En caso de éxito, devolverá el objeto PDO. Y en caso de falla, devolverá el objeto PDOException .
Error de manejo durante la conexión:
El objeto PDOException se lanzará en caso de cualquier error. Podemos capturar la excepción para manejar el error.
PHP
<?php try { $dsn = "mysql:host=localhost;dbname=gfg"; $user = "root"; $passwd = ""; $pdo = new PDO($dsn, $user, $passwd); } catch (PDOException $e) { echo "Error!: " . $e->getMessage() . "<br/>"; die(); } ?>
Producción:
Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' (using password: NO)
Ejemplo 1: Supongamos que tenemos una base de datos “gfg” con una tabla “estudiantes”. Queremos obtener los detalles como «id» y el nombre de todos los estudiantes presentes en la tabla «estudiantes».
PHP
<?php $dsn = "mysql:host=localhost;dbname=gfg"; $user = "root"; $passwd = ""; $pdo = new PDO($dsn, $user, $passwd); $stm = $pdo->query("SELECT * FROM students"); $rows = $stm->fetchAll(PDO::FETCH_ASSOC); foreach($rows as $row) { printf("{$row['id']} {$row['name']}\n"); } ?>
Producción:
1 Student1 2 Student2 3 Student3 4 Student4
Ejemplo 2: En este caso, supongamos que tenemos la tabla «empleado» en la base de datos «gfg». Queremos eliminar al empleado de la tabla «empleado» cuyo «id = 123».
PHP
<?php try { $dbhost = 'localhost'; $dbname='gfg'; $dbuser = 'root'; $dbpass = ''; $connect = new PDO( "mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); } catch (PDOException $e) { echo "Error : " . $e->getMessage() . "<br/>"; die(); } $count = $connect->exec("DELETE FROM employee WHERE emp_id = 123 "); echo("Number of rows to be deleted from the employee table is: ". $count); ?>
Producción:
The number of rows to be deleted from the employee table is: 1
Beneficios de la DOP:
- Usabilidad: PDO contiene funciones de ayuda para operar operaciones de rutina automáticas.
- Reutilización: Podemos acceder a múltiples bases de datos porque ofrece una API unificada.
- Seguridad: proporciona protección contra la inyección de SQL porque utiliza una declaración preparada . Una sentencia preparada separa la instrucción de la sentencia SQL de los datos.
- Manejo de errores: utiliza excepciones para el manejo de errores. Hay tres tipos de modos:
- Silencioso
- Advertencia
- Excepción
- Compatibilidad con varias bases de datos: se utiliza para acceder a cualquier base de datos escrita para el controlador PDP. Necesitamos encontrar un controlador adecuado y agregarlo cuando lo usemos. Hay varios controladores PDO disponibles como Microsoft SQL Server, Sybase, PostgreSQL y muchos más.
Base de datos compatible: PDO admite 12 bases de datos diferentes.
- mysql
- postgresql
- Oráculo
- pájaro de fuego
- Servidor MS SQL
- Sybase
- Informix
- IBM
- TDS gratis
- SQLite
- Cubrido
- 4D
Publicación traducida automáticamente
Artículo escrito por sftrengdeepak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA