Introduzione
PDO: accesso a MySQL con PHP -> PDO, acronimo di PHP Data Object, è un’estensione di PHP che permette di accedere a diversi database tramite un unico livello di astrazione. Questa estensione è stata introdotta a partire dalla versione 5.1 del linguaggio con lo scopo di unificare le API di accesso ai database.
PDO è un’opzione molto versatile e potente, che offre una serie di vantaggi rispetto alle precedenti librerie di accesso ai database di PHP, come MySQLi e MySQL functions.
Vantaggi di PDO
Tra i vantaggi di PDO troviamo:
- Un’unica interfaccia di programmazione: PDO fornisce un’unica interfaccia di programmazione per accedere a tutti i database supportati, eliminando la necessità di imparare una nuova API per ogni database.
- Supporto per diversi database: PDO supporta una vasta gamma di database, tra cui MySQL, PostgreSQL, Oracle, Microsoft SQL Server e altri.
- Sicurezza: PDO offre un’elevata sicurezza, grazie al supporto per le prepared statements.
- Efficienza: PDO è un’estensione efficiente, che può migliorare le prestazioni delle applicazioni PHP.
Installazione di PDO
PDO è incluso nella distribuzione standard di PHP, quindi non è necessario installarlo separatamente.
Connessione a un database MySQL con PDO
Per connettersi a un database MySQL con PDO, è necessario creare un oggetto PDO e specificare il nome del database, l’host, l’username e la password.
$dsn = 'mysql:host=localhost;dbname=my_database;charset=utf8';
$username = 'my_username';
$password = 'my_password';
$db = new PDO($dsn, $username, $password);
Esecuzione di query SQL con PDO
Per eseguire una query SQL con PDO, è necessario utilizzare il metodo query()
.
$sql = 'SELECT * FROM users';
$results = $db->query($sql);
Il metodo query()
restituisce un oggetto PDOStatement
, che rappresenta l’esecuzione della query.
Elaborazione dei risultati di una query con PDO
Per elaborare i risultati di una query, è possibile utilizzare i metodi fetch()
, fetchAll()
e fetchColumn()
.
Il metodo fetch()
restituisce un record della query come un array associativo o numerico.
while ($row = $results->fetch()) {
echo $row['name'] . ' ' . $row['surname'];
}
fetchAll()
restituisce tutti i record della query come un array di array associativi o numerici.
$users = $results->fetchAll();
foreach ($users as $user) {
echo $user['name'] . ' ' . $user['surname'];
}
Il metodo fetchColumn()
restituisce una colonna specifica di tutti i record della query.
$names = $results->fetchColumn('name');
foreach ($names as $name) {
echo $name;
}
Prepared statements con PDO
I prepared statements sono una tecnica che consente di migliorare la sicurezza e le prestazioni delle query SQL.
I prepared statements funzionano preparando una query SQL con i valori dei parametri, quindi eseguendo la query una sola volta per tutti i valori dei parametri.
Per utilizzare i prepared statements con PDO, è necessario utilizzare il metodo prepare()
.
$sql = 'SELECT * FROM users WHERE name = :name';
$stmt = $db->prepare($sql);
Quindi, è necessario associare i parametri della query ai valori effettivi.
$name = 'John Doe';
$stmt->bindParam(':name', $name);
Infine, è possibile eseguire la query.
$stmt->execute();
Esempio di applicazione con PDO
$stmt->execute();
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Esempio di applicazione con PDO</title>
</head>
<body>
<h1>Esempio di applicazione con PDO</h1>
<h2>Connessione al database</h2>
<?php
// Configurazione del database
$dsn = 'mysql:host=localhost;dbname=my_database;charset=utf8';
$username = 'my_username';
$password = 'my_password';
// Creazione della connessione
$db = new PDO($dsn, $username, $password);
?>
<h2>Esecuzione di una query</h2>
<?php
// Query SQL
$sql = 'SELECT * FROM users';
// Esecuzione della query
$results = $db->query($sql);
?>
<h2>Elaborazione dei risultati</h2>
<?php
// Ciclo sui risultati
while ($row = $results->fetch()) {
// Stampa dei dati
echo $row['name'] . ' ' . $row['surname'] . '<br>';
}
?>
</body>
</html>