La Classe wpdb
On this page... (hide)
- 1. Interfacciarsi al Database
- 2. Le Query - Effettuare ogni tipo di richiesta al Database
- 2.1 Esempi
- 3. Selezionare una variabile -
get_var- 3.1 Esempi
- 4. Selezionare una Riga -
get_row- 4.1 Esempi
- 5. Selezionare una Colonna -
get_col- 5.1 Esempi
- 6. Selezionare risultati generici -
get_results- 6.1 Esempi
- 7. Ottimizzare i dati per l'Inserimento -
escape- 7.1 Esempi
- 8. Mostrare o nascondere gli errori SQL -
show/hide_errors - 9. Ottenere informazioni sulle Colonne -
get_col_info - 10. Svuotare la Cache dei Risultati -
flush - 11. Variabili relative alla Classe
- 12. Tabelle
1. Interfacciarsi al Database
Per interfacciarsi al database ed effettuare tutte le operazioni necessarie, WordPress usa una classe specifica, chiamata wpdb e che si basa sulla classe ezSQL implementata da Justin Vincent. Sebbene la classe usata da WordPress sia leggermente differente da ezSQL, il loro utilizzo è essenzialmente lo stesso. Per maggiori informazioni, si veda la documentazione di ezSQL.
2. Le Query - Effettuare ogni tipo di richiesta al Database
La funzione query permette di eseguire ogni tipo di richiesta al database di WordPress.
<?php $wpdb->query('query'); ?>
- query
- (stringa) La richiesta che si vuole eseguire.
Se la richiesta ottiene dei risultati, la funzione restituisce un numero intero corrispondente al numero delle righe interessate dalla richiesta e tali risultati vengono memorizzati in una sorta di cache per essere usati dalle altre funzioni della classe wpdb. Se invece non ci sono risultati, la funzione restituisce zero (0). Se ancora, c'è un errore mySQL, la funzione restituisce come valore FALSE.
(Attenzione: poiché possono essere restituiti sia 0 che FALSE, è bene essere sicuiri di aver usato gli operatori di comparazione giusti: uguaglianza == contro identità ===).
2.1 Esempi
Aggiungere l'Articolo 13 alla Categoria 2: (i numeri ovviamente rappresentano gli ID)
$wpdb->query("
INSERT INTO $wpdb->post2cat (post_id, category_id)
VALUES (13, 2)");
Elimina il campo personalizzato 'gargle' (e relativo valore) dall'Articolo 13.
$wpdb->query("
DELETE FROM $wpdb->postmeta WHERE post_id = '13'
AND meta_key = 'gargle'");
Eseguita in WordPress dalla funzione delete_post_meta().
Imposta la Pagina 7 come pagina Madre della Pagina 17.
$wpdb->query("
UPDATE $wpdb->posts SET post_parent = 7
WHERE post_ID = 15 AND post_status = 'static'");
3. Selezionare una variabile - get_var
La funzione get_var restituisce una variabile singola dal database. Poiché viene restituita una sola variabile, l'intero risultato della query viene memorizzato per essere eventualmente utilizzato successivamente. Restituisce NULL se non ci sono risultati.
<?php $wpdb->get_var('query',column_offset,row_offset); ?>
- query
- (stringa) La richiesta che si vuole eseguire. Se si imposta questo parametro a
null, la variabile specificata viene restituita dai risultati memorizzati della query precedente. - column_offset
- (intero) La colonna di tabella desiderata (0 è la prima). Il valore predefinito è 0.
- row_offset
- (intero) La riga di tabella desiderata (0 è la prima). Il valore predefinito è 0.
3.1 Esempi
Ottenere il nome della Categoria dei Link che ha ID 4.
$name = $wpdb->get_var("SELECT cat_name FROM $wpdb->linkcategories WHERE cat_id=4");
- echo $name;
Eseguita in WordPress dalla funzione get_linkcatname().
4. Selezionare una Riga - get_row
Per ottenere un'intera riga dalla query, si usa get_row. Questa funzione restituisce la riga in diversi modi: come oggetto, array associativo o array numerico. Se i risultati contengono più di una riga, viene restituita solo la riga specificata, mentre le altre vengono memorizzate per essere utilizzate successivamente.
<?php $wpdb->get_row('query', output_type, row_offset); ?>
- query
- (stringa) La richiesta che si vuole eseguire. Se si imposta questo parametro a
null, la riga specificata viene restituita dai risultati memorizzati della query precedente. - output_type
- Una delle tre costanti predefinite. Il valore predefinito è
OBJECT. - OBJECT
- il risultato viene restituito in forma di oggetto.
- ARRAY_A
- il risultato viene restituito in forma di array associativo.
- ARRAY_N
- il risultato viene restituito in forma di array numerico.
- row_offset
- (intero) La riga di tabella desiderata (0 è la prima). Il valore predefinito è 0.
4.1 Esempi
Ottenere tutte le informazioni relative al Link 10.
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10");
Le proprietà dell'oggetto $mylink sono rappresentate dai nomi di colonna del risultato prodotto dalla query, vale a dire tutte le colonne della tabella $wpdb->links.
echo $mylink->link_id; // stampa "10"
Se invece si usa
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_A);
si ottiene un array associativo:
echo $mylink['link_id']; // stampa "10"
Analogamente
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_N);
produce un array numerico:
echo $mylink[1]; // stampa "10"
5. Selezionare una Colonna - get_col
Per selezionare una colonna, si usa la funzione get_col che produce un array dimensionale. Se i risultati contengono più di una colonna, viene restituita solo la colonna specificata, mentre le altre vengono memorizzate per essere utilizzate successivamente.
<?php $wpdb->get_col('query',column_offset); ?>
- query
- (stringa) La richiesta che si vuole eseguire. Se si imposta questo parametro a
null, la colonna specificata viene restituita dai risultati memorizzati della query precedente. - column_offset
- (intero) La colonna di tabella desiderata (0 è la prima). Il valore predefinito è 0.
5.1 Esempi
Ottere tutte le Categorie alle quali appartiene l'Articolo 103.
$postcats = $wpdb->get_col("SELECT category_id
FROM $wpdb->post2cat
WHERE post_id = 103
ORDER BY category_id");
Eseguita in WordPress dalla funzione wp_get_post_cats().
6. Selezionare risultati generici - get_results
Di solito, i risultati che comprendono più righe possono essere estratti dal database tramite la funzione get_results che restituisce l'intero risultato della richiesta in forma di array dimensionale.
Ciascun elemento dell'array corrisponde ad una riga del risultato e in maniera simile a get_row, può essere un oggetto, un array associativo, o un array numerico.
<?php $wpdb->get_results('query', output_type); ?>
- query
- (stringa) La richiesta che si vuole eseguire. Se si imposta questo parametro a
nulli dati vengono restituiti da quelli memorizzati dalla query precedente. - output_type
- Una delle tre costanti predefinite. Il valore predefinito è
OBJECT. - OBJECT
- il risultato viene restituito in forma di oggetto.
- ARRAY_A
- il risultato viene restituito in forma di array associativo.
- ARRAY_N
- il risultato viene restituito in forma di array numerico.
- row_offset
- (intero) La riga di tabella desiderata (0 è la prima). Il valore predefinito è 0.
6.1 Esempi
Ottenere gli ID e i Titoli di tutte le Bozze dell'Utente 5 e stampare i Titoli.
$fivesdrafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts
WHERE post_status = 'draft' AND post_author = 5");
foreach ($fivesdrafts as $fivesdraft) {
echo $fivesdraft->post_title;
- }
7. Ottimizzare i dati per l'Inserimento - escape
Prima di inserire dei dati nel database, bisogna assicurarsi che siano ottimizzati in modo da non avere errori. Spesso questi errori capitano se nel testo sono presenti le virgolette (") o gli apici ('), che causano una rappresentazione errata della query. Per evitare questo tipo di errori è sufficiente usare la funzione escape.
<?php $wpdb->escape('stringa'); ?>
- stringa
- (stringa) La stringa di testo che si vuole ottimizzare.
7.1 Esempi
Aggiungere all'Articolo 10 un Campo Personalizzato avente come chiave "L'Agenda di Oggi" e come valore "Chiamare l'idraulico.". In questo caso i due apostrofi presenti nei campi personalizzati, potrebbero causare un errore nella query di inserimento, ragion per cui si può ottimizzare il tutto con
$metakey = $wpdb->escape("L'Agenda di Oggi");
- $metavalue = $wpdb->escape("Chiamare l'idraulico.");
$wpdb->query("
INSERT INTO $wpdb->postmeta
(post_id,meta_key,meta_value)
VALUES ('10','$metakey','$metavalue')");
Eseguita in WordPress dalla funzione add_meta().
8. Mostrare o nascondere gli errori SQL - show/hide_errors
E' possibile attivare o disattivare la visualizzazione degli errori SQL tramite le funzioni show_errors e hide_errors.
<?php $wpdb->show_errors(); ?> <?php $wpdb->hide_errors(); ?>
E' anche possibile visualizzare gli eventuali errori generati dall'ultima query eseguita, tramite print_error.
<?php $wpdb->print_error(); ?>
9. Ottenere informazioni sulle Colonne - get_col_info
E' possibile ottenere informazioni circa le colonne interessate dall'ultima query eseguita, tramite get_col_info. Questa funzione può rivelarsi utile quando una precedente funzione ha restituito un OBJECT di cui non si conoscono le proprietà. Questa restituisce le informazioni relative alla colonna specificata, oppure un array contenente le informazioni relative a tutte le colonne, nel caso non sia stata indicata nessuna colonna.
<?php $wpdb->get_col_info('type', offset); ?>
- type
- (stringa) Le informazioni che si desiderano ottenere. Può avere come parametro uno dei seguenti valori (la lista è presa dalla documentazione di ezSQL). Il valore predefinito è name.
- name
- nome della colonna. Predefinito.
- table
- nome della tabella a cui appartiene la colonna
- max_length
- lunghezza massima della colonna
- not_null
- 1 se la colonna non permette valori di tipo NULL
- primary_key
- 1 se la colonna è una chiave primaria
- unique_key
- 1 se la colonna è una chiave unica
- multiple_key
- 1 se la colonna non è una chiave unica
- numeric
- 1 se la colonna è di tipo numerico
- blob
- 1 se la colonna è di tipo BLOB
- type
- il tipo di colonna
- unsigned
- 1 se la colonna è unsigned
- zerofill
- 1 se la colonna è zero-filled
- offset
- (intero) Specifica la colonna di cui si vogliono avere le informazioni (0 è la prima). Il valore predefinito è -1.
- -1
- Ottiene le informazioni relative a tutte le colonne. Restituisce un array. Predefinito.
- Non-negative
- (intero) - Ottiene le informazioni da una colonna specifica (0 è la prima).
10. Svuotare la Cache dei Risultati - flush
E' possibile eliminare i risultati SQL memorizzati tramite flush.
<?php $wpdb->flush(); ?>
La funzione elimina anche i valori di $wpdb->last_result, $wpdb->last_query, e $wpdb->col_info.
11. Variabili relative alla Classe
- $show_errors
- Mostra o meno la visualizzazione degli errori SQL. Il valore predefinito è TRUE.
- $num_queries
- Il numero delle query eseguite.
- $last_query
- L'ultima query eseguita.
- $queries
- Se si vogliono memorizzare tutte le query eseguite (e i rispettivi tempi di esecuzione) settare la costante SAVEQUERIES a TRUE (il valore predefinito di tale costante è FALSE). Se SAVEQUERIES è settata a TRUE, le query vengono memorizzate in questa variabile in forma di array.
- $last_results
- I risultati ottenuti dall'ultima query eseguita.
- $col_info
- Le informazioni della colonna interessata dall'ultima query eseguita.
12. Tabelle
Le tabelle del database di WordPress interessate dalla classe wpdb.
- $posts
- La tabella degli Articoli.
- $users
- La tabella degli Utenti.
- $categories
- La tabella delle Categorie.
- $post2cat
- La tabella che definisce l'appartenenza degli Articoli alle Categorie.
- $comments
- La tabella dei Commenti.
- $links
- La tabella dei Links.
- $linkcategories
- La tabella delle Categorie dei Link.
- $options
- La tabella delle Opzioni.
- $postmeta
- La tabella contenente il contenuto Meta (cioè i Campi Personalizzati).