$wpdb->get_row() restituisce solo una singola riga?

8 apr 2011, 06:42:01
Visualizzazioni: 196K
Voti: 39

Perché succede questo? Ho provato la stessa query nella console e ha restituito più righe. Ecco la query:

$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);

Continua a restituire la stessa singola riga quando ci sono diversi utenti attivi. Mi sta sfuggendo qualcosa?

1
Commenti

Si chiama get_row() per un motivo...

Ciprian Ciprian
17 ago 2021 12:53:06
Tutte le risposte alla domanda 4
1
66

Infatti, usa get_row() solo quando ti aspetti di ottenere un risultato singolo, altrimenti puoi usare get_results()

8 apr 2011 06:52:38
3
58

Esistono tre modi per estrarre dati dal database.

1.$wpdb->get_var: utilizza questa funzione per ottenere un singolo valore dalla tabella del database. Ad esempio, se vuoi contare il numero totale di commenti. Puoi farlo nel seguente modo:

<?php 
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;")); 
echo '<p>Commenti totali: ' . $comment_count . '</p>';
?>

2.$wpdb->get_row : Per recuperare un'intera riga della tabella puoi utilizzare questa funzione.

Esempio:

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title; 
?>

OPPURE

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost); 
?>

Utilizzando il parametro ARRAY_A in get_row, i dati del post vengono restituiti come un array associativo. In alternativa, puoi usare il parametro ARRAY_N per ottenere i dati del post come un array indicizzato numericamente.

3.$wpdb->get_results: Le normali query SELECT dovrebbero utilizzare la funzione get_results per recuperare più righe di dati dal database.

<?php 
global $wpdb;
$allposts = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish'") );
foreach ($allposts as $singlepost) { 
         echo '<p>' .$singlepost->post_title. '</p>';
}
?>

e, come puoi immaginare, avrai bisogno dell'ultimo metodo.

8 apr 2011 10:00:57
Commenti

Esempi di dettagli meravigliosi..

pixelngrain pixelngrain
27 gen 2013 19:31:10

Certo! perché no..

pixelngrain pixelngrain
28 gen 2013 18:45:23

Esempi davvero ottimi. Per l'ottimizzazione della velocità nell'ultimo esempio consiglierei di cambiare questo: ($allposts as $singlepost) in: ($allposts as $k => $singlepost)

Cyborg Cyborg
30 dic 2020 04:39:40
0
$wpdb->get_row('query', output_type, row_offset);

row_offset (intero) La riga desiderata (0 è la prima). Predefinito a 0.

Vedi http://codex.wordpress.org/Class_Reference/wpdb

1 set 2011 18:57:24
2

la mia soluzione è semplice..

<?php
function count_results() {
    # usa il database
    global $wpdb;

    # Query per contare tutti i risultati da una tabella
    $sql_count_results = '
        SELECT count(*) as count
        FROM `YOUR_TABLE`;';

    # Esegue la funzione
    $results = $wpdb->get_row( $sql_count_results , OBJECT );

    # Restituisce i risultati
    return $results->count;
}

Utilizzo:

<?php
echo count_results();
16 nov 2016 11:05:10
Commenti

Sarebbe fantastico se oltre a postarlo potessi anche spiegare cosa fa questo codice.

bravokeyl bravokeyl
16 nov 2016 11:21:11

Questo conta le righe in una tabella, non è una risposta alla domanda dell'OP.

alexg alexg
16 gen 2019 00:02:34