PDO è una classe che permette di interfacciarsi con qualsiasi tipo di DBMS (Microsoft Access, MySql, PostgreSQL, Oracle DB ecc).
Funziona in modo simile a mysqli.
Vediamo come connettersi a un database MySql con PDO:
Niente di difficile effettivamente. Se volessimo connetterci a un database ACCESS:
Dopo essersi connessi possiamo usare diversi metodi, tra cui exec() e query()
Entrambi i metodi consentono di effettuare delle query sul database, ma exec() restituisce solo il numero di righe interessate dalla query, mentre query() restituisce un oggetto di classe PDOStatement, sul quale è possibile lavorare e che espone (tra gli altri) i seguenti metodi:
Restituisce un array contenente il risultato della query allo stesso modo di mysql_fetch_array() (che quindi consente di creare un array associativo, indicizzato o entrambi, in base al parametro che gli si passa (rispettivamente PDO::FETCH_ASSOC, PDO::FETCH_NUM e PDO::FETCH_BOTH). Omettendo il parametro verrà selezionato automaticamente PDO::FETCH_BOTH)
- fetchAll()
Restituisce un array contenente un array per ogni riga risultato.
Riporto l'esempio di php.net:
Che produrrà un output simile a questo (come al solito array associativo + indicizzato):
- fetchColumn()
Restituisce il valore di una specifica colonna nella riga del recordset (risultato della query). Fornendo come parametro un numero (a partire da 0), restituisce la X-esima colonna. Ogni chiamata a questo metodo restituisce sempre la prossima colonna (o la prima nel caso di nuova riga).
Esempio:
- rowCount()
Restituisce il numero di righe interessate dall'ultimo comando DML (quindi solo INSERT, UPDATE e DELETE). Non è come mysql_num_rows(), che restituisce il numero di righe anche per le query di selezione (SELECT). Qualche DBMS potrebbe fornire il risultato anche per le SELECT, ma solitamente questo non avviene.
Per ottenere il numero di righe interessate da una SELECT è necessario fare una cosa di questo genere:
- closeCursor()
Rilascia la memoria allocata per il recordset.
Bene, questo è quanto, almeno per ora. Mi rimane solo da dire che in caso di errore, PDO solleva un eccezione istanza della classe PDOException, ma per le cose basilari può bastare così.
:bye:
Funziona in modo simile a mysqli.
Vediamo come connettersi a un database MySql con PDO:
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Entrambi i metodi consentono di effettuare delle query sul database, ma exec() restituisce solo il numero di righe interessate dalla query, mentre query() restituisce un oggetto di classe PDOStatement, sul quale è possibile lavorare e che espone (tra gli altri) i seguenti metodi:
- fetch()
- fetchAll()
- fetchColumn()
- rowCount()
- closeCursor()
Restituisce un array contenente il risultato della query allo stesso modo di mysql_fetch_array() (che quindi consente di creare un array associativo, indicizzato o entrambi, in base al parametro che gli si passa (rispettivamente PDO::FETCH_ASSOC, PDO::FETCH_NUM e PDO::FETCH_BOTH). Omettendo il parametro verrà selezionato automaticamente PDO::FETCH_BOTH)
- fetchAll()
Restituisce un array contenente un array per ogni riga risultato.
Riporto l'esempio di php.net:
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
- fetchColumn()
Restituisce il valore di una specifica colonna nella riga del recordset (risultato della query). Fornendo come parametro un numero (a partire da 0), restituisce la X-esima colonna. Ogni chiamata a questo metodo restituisce sempre la prossima colonna (o la prima nel caso di nuova riga).
Esempio:
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
- rowCount()
Restituisce il numero di righe interessate dall'ultimo comando DML (quindi solo INSERT, UPDATE e DELETE). Non è come mysql_num_rows(), che restituisce il numero di righe anche per le query di selezione (SELECT). Qualche DBMS potrebbe fornire il risultato anche per le SELECT, ma solitamente questo non avviene.
Per ottenere il numero di righe interessate da una SELECT è necessario fare una cosa di questo genere:
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
- closeCursor()
Rilascia la memoria allocata per il recordset.
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Bene, questo è quanto, almeno per ora. Mi rimane solo da dire che in caso di errore, PDO solleva un eccezione istanza della classe PDOException, ma per le cose basilari può bastare così.
:bye: