Para realizar consultas preparadas con PDO (PHP Data Objects) en PHP, es fundamental seguir ciertas pautas que aseguran la seguridad, eficacia y claridad de las operaciones con bases de datos. Las consultas preparadas son esenciales para protegerse contra ataques de inyección SQL y garantizar que los datos sean manejados adecuadamente.
```php
$dsn = ‘mysql:host=localhost;dbname=testdb’;
$username = ‘root’;
$password = ‘’;
try {
$pdo = new PDO;
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo ‘Connection failed: ‘ . $e->getMessage();
}
?>
```
En este ejemplo, `$dsn` contiene los detalles del host y el nombre de la base de datos, mientras que `$username` y `$password` son tus credenciales de acceso.
```php
$sql = ‘SELECT * FROM users WHERE email = :email’;
$stmt = $pdo->prepare($sql);
```
Aquí, `:email` es un marcador de parámetro que será reemplazado con un valor concreto durante la ejecución.
```php
$email = ‘user@example.com’;
$stmt->execute([‘email’ => $email]);
```
Este método ejecuta la consulta reemplazando `:email` con el valor de `$email`. También puedes unir parámetros utilizando `bindParam` o `bindValue`:
```php
$stmt->bindParam(‘:email’, $email, PDO::PARAM_STR);
$stmt->execute();
```
`bindParam` enlaza una variable a un parámetro de consulta, mientras que `bindValue` enlaza un valor.
```php
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
echo $row[‘name’] . ‘ – ‘ . $row[‘email’] . ‘
’;
}
```
`fetchAll` devuelve un array con todas las filas resultantes de la consulta. `PDO::FETCH_ASSOC` devuelve un array indexado por los nombres de las columnas.
```php
$dsn = ‘mysql:host=localhost;dbname=testdb’;
$username = ‘root’;
$password = ‘’;
try { $pdo = new PDO; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = ‘SELECT * FROM users WHERE email = :email’; $stmt = $pdo->prepare($sql); $email = ‘user@example.com’; $stmt->bindParam(‘:email’, $email, PDO::PARAM_STR); $stmt->execute(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($results as $row) { echo $row[‘name’] . ‘ – ‘ . $row[‘email’] . ‘} catch (PDOException $e) {
echo ‘Connection failed: ‘ . $e->getMessage();
}
?>
```
Estos recursos ofrecen una cobertura completa y detallada de cómo usar PDO para manejar consultas preparadas en PHP, garantizando tanto la seguridad como la eficacia en el manejo de las bases de datos.