So analysieren Sie Zeilenergebnisse aus $ wpdb -> get_results

10

Ich habe folgendes:

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

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

Wie erhalte ich die Spalten 'id' und 'name' aus $ row?

redconservatory
quelle

Antworten:

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;}

Mehr Infos hier

Pippin
quelle
2
Ich bin mir nicht sicher, ob dies der richtige Weg ist. Ich denke, man sollte das Ergebnis in eine Variable umwandeln und foreach verwenden, um sicher zu gehen. ZB $ results = $ wpdb-> get_results ($ sql); und verwenden Sie dann foreach ($ results als $ value).
Gogol
sollte in diesem Fall nicht wirklich von Bedeutung sein, da es Array, Objekt oder Null zurückgibt, sollte es kein Risiko geben, eine "schleifenunfreundliche" Ressource zu erhalten. Das heißt, Sie möchten sie vielleicht noch einmal für etwas anderes durchlaufen und wenn ja, auf jeden Fall speichern. nicht zweimal abfragen
Garet Claborn
2

Probieren Sie immer den WordPress-Codex aus: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Im Wesentlichen ist die Variable $ row hier angesichts der Standardsyntax ein Objekt, das Ihre Ergebnisse enthält. Sie können alternativ den TYP des Ergebnisses angeben (numerisches Array, assoziatives Array).

Wenn Sie nur ein Ergebnis annehmen, sollten Ihnen $ row-> id und $ row-> name die Informationen geben.

Wenn Sie mehr als ein Ergebnis zurückerhalten, möchten Sie die Einträge im Objekt durchlaufen.

Wenn Sie nur eine Zeile zurück erwarten, verwenden Sie $ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row

Jeff Rose
quelle
2

So verwenden Sie es als assoziatives Array:

$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

Verwendungszweck

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

Um andere Formate zu erhalten, ändern Sie einfach ARRAY_Abasierend auf der Dokumentation für$wpdb->get_results() . Pippins Antwort ist für die meisten Objekte geeignet.

So verwenden Sie eine Zeile als numerisch indiziertes Array

$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 . ' ';

So verwenden Sie eine Zeile in einem Array, dessen Schlüssel der Primärschlüssel Ihrer Datenbank sind (häufig eine idSpalte). Möglicherweise effizienter als die assoziative Array-Methode.

$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;
Garet Claborn
quelle
1

Dieser Code funktioniert perfekt für mich:

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;}    
Jismon Thomas
quelle