Come analizzare i risultati delle righe da $wpdb -> get_results
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?

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

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).

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

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;

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
