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

20 lug 2011, 00:42:35
Visualizzazioni: 128K
Voti: 15

Ho il seguente codice:

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

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

Come posso ottenere i valori delle colonne 'id' e 'name' da $row?

0
Tutte le risposte alla domanda 4
2
22
foreach( $wpdb->get_results("SELECT * FROM your_table_name WHERE id LIKE' . $id . ';") as $key => $row) {
// ogni colonna nella tua riga sarà accessibile in questo modo
$my_column = $row->column_name;}

Più informazioni qui

20 lug 2011 02:20:01
Commenti

non sono sicuro che questo sia il modo giusto però. Penso che si dovrebbe ottenere il risultato in una variabile e usare foreach su quella, per essere sicuri. Ad esempio $results = $wpdb->get_results($sql); e poi usare foreach($results as $value).

Gogol Gogol
13 set 2013 14:15:57

in questo caso non dovrebbe fare molta differenza visto che restituisce array, object o null, non dovrebbe esserci il rischio di ottenere una risorsa "non adatta al loop". Detto questo, potresti volerci iterare di nuovo per qualcos'altro, e in quel caso sicuramente memorizzalo. Non eseguire la query due volte

That Realtor Programmer Guy That Realtor Programmer Guy
30 ott 2017 00:18:10
0

Per utilizzare come array associativo:

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

// $obj ora contiene la riga selezionata se è stata trovata una corrispondenza

Utilizzo

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

Per ottenere altri formati, basta cambiare ARRAY_A in base alla documentazione per $wpdb->get_results(). La risposta di Pippin è appropriata per la maggior parte degli utilizzi con oggetti.

Per utilizzare una riga come array indicizzato numericamente

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

//Utilizzo
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 colonna id). Potenzialmente più efficiente del metodo con array associativo.

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

//Utilizzo

$something = $obj->nome_colonna;

//Ricorda che puoi iterare anche sugli oggetti
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL;
31 ott 2017 01:47:50
0

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;}    
15 mar 2018 18:52:59
0

Consulta sempre il WordPress Codex: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

In sostanza, data la sintassi predefinita, la variabile $row qui è un oggetto che contiene i tuoi risultati. In alternativa, potresti specificare il TIPO di risultato (array numerico, array associativo).

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

Se ottieni più di un risultato, dovresti eseguire un loop sulle voci nell'oggetto.

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

20 lug 2011 01:07:48