Salta ai contenuti
Manuale LogoManuale Logo

Collegarsi a un database con PDO

PDO è uno strumento di PHP per comunicare con database diversi attraverso un’interfaccia comune.

Puoi pensarlo come un adattatore: il codice PHP usa PDO, che comunica con il database.

Per collegarti servono:

  • host, cioe dove si trova il database
  • nome del database
  • utente
  • password
  • charset, cioe il modo in cui vengono gestiti i caratteri
<?php
$dsn = "mysql:host=localhost;dbname=negozio;charset=utf8mb4";
$utente = "root";
$password = "";
$pdo = new PDO($dsn, $utente, $password);

$dsn descrive il tipo di database e dove trovarlo. In questo esempio usiamo MySQL.

Aggiungi opzioni per ricevere messaggi di errore chiari.

<?php
$pdo = new PDO($dsn, $utente, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);

ERRMODE_EXCEPTION fa lanciare eccezioni quando qualcosa va storto. FETCH_ASSOC restituisce le righe come array associativi.

Non mettere password reali in file pubblici o condivisi. Nei progetti reali si usano variabili d’ambiente o file di configurazione esclusi dalla pubblicazione.

<?php
echo "Connessione riuscita";

Se il codice arriva a questa riga senza errori, PHP è riuscito a collegarsi.

Una connessione può fallire per una password sbagliata, un database spento o un nome errato. Per gestire questi casi puoi usare try e catch.

<?php
try {
$pdo = new PDO($dsn, $utente, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
echo "Connessione riuscita";
} catch (PDOException $errore) {
echo "Impossibile collegarsi al database";
}

Durante lo studio puoi leggere il messaggio tecnico dell’errore. In un sito pubblico mostra invece un messaggio generico e registra il dettaglio nei log.

Dopo la connessione puoi provare una query semplice.

<?php
$stmt = $pdo->query("SELECT 1");
$risultato = $stmt->fetchColumn();
echo $risultato;

Se vedi 1, PHP ha comunicato con il database e ha ricevuto una risposta.

PDO non sostituisce SQL: è il mezzo con cui PHP invia istruzioni SQL al database e riceve risultati.