Come recuperare record dal database in WordPress

3 dic 2013, 15:38:21
Visualizzazioni: 14K
Voti: 0

index.php:

<?php 
// Recupera tutti i record dalla tabella wp_posts dove il titolo è 'Auto Draft'
$new = $wpdb->query("SELECT * FROM wp_posts WHERE post_title='Auto Draft'");
// Estrae una riga dal risultato
$new1 = mysql_fetch_row($new);
// Stampa il primo valore della riga
echo $new1[0];
?>

Come recuperare record dal database?
Come funziona il database con i file di WordPress?

0
Tutte le risposte alla domanda 1
4

wpdb è un semplice wrapper attorno alle funzioni mysql_*, ma non puoi mescolarle. $wpdb->query non restituisce il riferimento al database di cui mysql_fetch_row ha bisogno. Esso ...

... restituisce un intero corrispondente al numero di righe interessate/selezionate. Se c'è un errore MySQL, la funzione restituirà FALSE. (Nota: poiché possono essere restituiti sia 0 che FALSE, assicurati di utilizzare l'operatore di confronto corretto: uguaglianza == vs. identicità ===).

Devi solo leggere il Codex.

Quindi, $wpdb->query è davvero per query che non restituiscono dati, come una cancellazione.

Ciò che vuoi è:

$new = $wpdb->get_results("select * from wp_posts where post_title='Auto Draft'");

Dovresti usare anche prepare se stai utilizzando dati forniti dall'utente.

$new = $wpdb->get_results($wpdb->prepare("select * from wp_posts where post_title=%s",$str));

Questo restituirà un oggetto, ma puoi passare un secondo parametro per ottenere un array. Puoi iterare su quell'oggetto o array con le normali operazioni PHP su oggetti/array.

Esistono anche $wpdb->get_var e $wpdb->get_col.

Il database contiene, come in qualsiasi altra applicazione PHP/MySQL, i tuoi contenuti dinamici - post, pagine, opzioni configurabili, tabelle delle categorie, ecc. Non è un elenco facilmente enumerabile.

Per quanto riguarda la domanda nel commento, "quale caso abbiamo bisogno di usare più probabilmente" Non ne ho idea. Dipende da ciò che stai facendo. Non è davvero rispondibile, ma direi che nella maggior parte dei casi non dovresti aver bisogno, né dovresti comunque, scrivere SQL per manipolare il database. Ci sono molte funzioni di base per questo - WP_Query, WP_User_Query, set_option, update_post_meta, wp_update_post, e così via per altre venti righe.

3 dic 2013 16:21:29
Commenti

che gentile da parte tua :) qual è il ruolo del database .intendo come utilizzare le query del database in wordpress e in quali casi è più probabile che dobbiamo usarle. grazie mille

Tushar Sharma Tushar Sharma
4 dic 2013 06:45:39

@TusharSharma : Vedi la modifica.

s_ha_dum s_ha_dum
4 dic 2013 17:23:06

@s_ha_dum puoi per favore verificare i punti seguenti. - Hai menzionato $wpdb->query è veramente per query che non restituiscono dati, come un delete. ma nel caso di una query delete $wpdb->query restituirà il numero di record interessati. - Hai usato $wpdb->results. Non dovrebbe essere $wpdb->get_results?

Chittaranjan Chittaranjan
13 dic 2013 08:51:11

Intendevo "restituire dati dal database"—righe/valori dal database. Sì, credo che tutti i metodi restituiscano alcune informazioni sull'esecuzione della query. Sì, è get_results. Probabilmente stavo scrivendo di fretta. :)

s_ha_dum s_ha_dum
13 dic 2013 16:35:03