• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida I Database con PDO

Dvdxseo

Redattore Onorario
Autore del topic
Redattore
User Legend
27 Maggio 2008
5.522
158
Miglior risposta
0
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:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Niente di difficile effettivamente. Se volessimo connetterci a un database ACCESS:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
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:
  • fetch()
  • fetchAll()
  • fetchColumn()
  • rowCount()
  • closeCursor()
- fetch()
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!
Che produrrà un output simile a questo (come al solito array associativo + indicizzato):
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:
 
  • Like
Reactions: 2 people
Ottimo come sempre, comunque se si usa una tipologia di database diversa da mysqli si è obbligati a scegliere PDO.

Ecco un altro esempio di connessione ;)
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Spero possa esservi utile.
 
Ottimo come sempre, comunque se si usa una tipologia di database diversa da mysqli si è obbligati a scegliere PDO.

Ecco un altro esempio di connessione ;)
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Spero possa esservi utile.

Questo infatti è con la gestione delle eccezioni.. Sarebbe l'equivalente dell'if che si fa subito dopo la mysql_connect() in parole molto povere. :emoji_relieved:
 
Che sorpresa, una nuova guida da studiare :emoji_relieved:
Grazie per averlo postato, ottimo! :emoji_slight_smile:
 
Ultima modifica: