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


21

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

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

Continua a restituire la stessa riga singola quando ci sono più utenti attivi. Mi sto perdendo qualcosa?

Risposte:



40

Esistono tre modi per estrarre i dati dal database.

1 $wpdb->get_var.: utilizzare questo per ottenere un singolo valore dalla tabella del database. Come se si desidera contare il numero totale di commenti. Puoi farlo nel modo seguente:

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

2 $wpdb->get_row.: per recuperare un'intera riga della tabella è possibile utilizzare questo.

Esempio:

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

O

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

Usando il ARRAY_Aparametro in get_row i tuoi dati post vengono restituiti come un array associativo. In alternativa, è possibile utilizzare il ARRAY_Nparametro per restituire i dati dei post in una matrice indicizzata numericamente.

3 $wpdb->get_results.: Le SELECTquery standard devono 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 hai bisogno dell'ultimo, come puoi aspettarti.


Esempi di dettagli meravigliosi ..
pixelngrain,

Sicuro! perché no ..
pixelngrain,


0

la mia soluzione è semplice ..

<?php
function count_results() {
    # use the data base
    global $wpdb;

    # Query to count all results from one table
    $sql_count_results = '
        SELECT count(*) as count
        FROM `YOUR_TABLE`;';

    # Ejecute function
    $results = $wpdb->get_row( $sql_count_results , OBJECT );

    # Return results
    return $results->count;
}

Uso:

<?php
echo count_results();

4
Sarebbe bello se puoi anche spiegare cosa fa questo codice oltre a pubblicarlo.
bravokeyl,

Questo conta le righe in una tabella, non è una risposta alla domanda del PO.
aprile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.