Cara mem-parsing hasil baris dari $ wpdb -> get_result

10

Saya memiliki yang berikut ini:

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

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

Bagaimana cara mendapatkan kolom bernama 'id' dan 'name' dari $ row?

redconservatory
sumber

Jawaban:

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

Info lebih lanjut di sini

Pippin
sumber
2
tidak yakin apakah ini jalan yang benar. Saya pikir kita harus mendapatkan hasilnya ke variabel dan menggunakan foreach untuk itu, agar aman. Misalnya $ results = $ wpdb-> get_results ($ sql); dan kemudian gunakan foreach ($ hasil sebagai $ nilai).
Gogol
seharusnya tidak terlalu penting dalam hal ini karena mengembalikan array, objek atau null, seharusnya tidak ada risiko mendapatkan sumber daya "loop tidak ramah". yang mengatakan Anda mungkin ingin mengulanginya lagi untuk sesuatu yang lain, dan jika demikian simpanlah. jangan
tanya
2

Selalu Coba Codex WordPress: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Pada dasarnya diberikan sintaks default, variabel $ row di sini adalah objek yang berisi hasil Anda. Anda bisa secara alternatif menentukan TIPE hasil (array numerik, array asosiatif).

Dengan asumsi hanya satu hasil, maka $ row-> id dan $ row-> name akan memberi Anda informasi.

Jika Anda mendapatkan lebih dari satu hasil, Anda ingin mengulang entri di objek.

Jika Anda mengharapkan hanya satu baris ke belakang, maka coba gunakan $ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row

Jeff Rose
sumber
2

Untuk digunakan sebagai array asosiatif:

$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

Pemakaian

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

Untuk mendapatkan format lain, cukup ubah ARRAY_Aberdasarkan pada dokumentasi untuk$wpdb->get_results() . Jawaban Pippin cocok untuk sebagian besar penggunaan objek.

Untuk menggunakan satu baris sebagai array yang diindeks secara numerik

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

Untuk menggunakan satu baris dalam larik yang kuncinya adalah kunci utama dari basis data Anda (seringkali berupa idkolom). Mungkin lebih efisien daripada metode array asosiatif.

$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
sumber
1

Kode ini sangat cocok untuk saya:

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
sumber