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?

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


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


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;

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;}    
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.