Come analizzare i risultati delle righe da $ wpdb -> get_results


10

Ho il seguente:

$query = 'SELECT * FROM wp_pod_tbl_add_questions WHERE id LIKE '. $id;

                                        $row = $wpdb -> get_results($query);

Come ottengo le colonne denominate "id" e "name" da $ row?

Risposte:


18
foreach( $wpdb->get_results("SELECT * FROM your_table_name WHERE id LIKE' . $id . ';") as $key => $row) {
// each column in your row will be accessible like this
$my_column = $row->column_name;}

Maggiori informazioni qui


2
non sono sicuro se questo è il modo giusto però. Penso che si dovrebbe ottenere il risultato in una variabile e usare foreach su quello, per sicurezza. Ad esempio $ results = $ wpdb-> get_results ($ sql); e quindi usa foreach ($ risultati come $ valore).
Gogol,

in questo caso non dovrebbe importare davvero poiché restituisce array, oggetto o null, non dovrebbe esserci alcun rischio di ottenere una risorsa "loop ostile". detto questo, potresti voler ricominciare da capo per qualcos'altro, e in tal caso sicuramente conservarlo. non interrogare due volte
Garet Claborn,

2

Prova sempre il codice WordPress: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Essenzialmente data la sintassi predefinita, la variabile $ row qui è un oggetto che contiene i tuoi risultati. È possibile specificare alternativamente il TIPO di risultato (matrice numerica, matrice associativa).

Supponendo solo un risultato, quindi $ row-> id e $ row-> name dovrebbero fornirti le informazioni.

Se si ottiene più di un risultato, si desidera scorrere in sequenza le voci nell'oggetto.

Se ti aspetti solo una riga indietro, prova a utilizzare $ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row


2

Per utilizzare come una matrice associativa:

$obj=[];
$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id , ARRAY_A);
foreach($rows as $row){  $obj=$row; break; }

// $obj is now the selected row if a match was found

uso

$something = $obj['column_name'];
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL . '<br />';

Per ottenere altri formati, è sufficiente cambiare in ARRAY_Abase alla documentazione per$wpdb->get_results() . La risposta di Pipino è appropriata per la maggior parte degli oggetti.

Per utilizzare una riga come una matrice indicizzata numericamente

$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id , ARRAY_N);
foreach($rows as $row){  $obj=$row; break; }

//Usage
foreach($obj as $col_value) echo $col_value . ' ';

Per utilizzare una riga in un array le cui chiavi sono la chiave primaria del database (spesso una idcolonna). Forse più efficiente del metodo array associativo.

$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id ,  OBJECT_K);
$obj = $rows[ $obj_id ];

//Usage

$something = $obj->column_name;

//Remember you can loop over objects too
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL;

1

Questo codice funziona perfettamente per me:

global $wpdb;
$table_name = "my_table_name";
$myrows = $wpdb->get_results( "SELECT `id`, `name` FROM ".$table_name);
    foreach ($myrows as $details) {
      echo $details->id;
      echo $details->name;}    
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.