Cách phân tích kết quả hàng từ $ wpdb -> get_results


10

Tôi có những điều sau đây:

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

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

Làm cách nào để có được các cột có tên 'id' và 'name' từ $ row?

Câu trả lời:


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

Thêm thông tin ở đây


2
không chắc chắn nếu đây là cách đúng. Tôi nghĩ người ta nên lấy kết quả cho một biến và sử dụng foreach về điều đó, để an toàn. Ví dụ: $ results = $ wpdb-> get_results ($ sql); và sau đó sử dụng foreach ($ results dưới dạng $ value).
Gogol

không thực sự quan trọng trong trường hợp này vì nó trả về mảng, đối tượng hoặc null, không nên có bất kỳ rủi ro nào khi nhận tài nguyên "vòng lặp không thân thiện". điều đó nói rằng bạn có thể muốn lặp lại chúng một lần nữa cho một cái gì đó khác, và nếu vậy chắc chắn lưu trữ nó. không truy vấn hai lần
Garet Claborn

2

Luôn luôn thử Codex WordPress: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Về cơ bản được đưa ra cú pháp mặc định, biến $ row ở đây là một đối tượng chứa kết quả của bạn. Bạn có thể luân phiên chỉ định LOẠI kết quả (mảng số, mảng kết hợp).

Giả sử chỉ có một kết quả, thì $ row-> id và $ row-> name sẽ cung cấp cho bạn thông tin.

Nếu bạn nhận lại nhiều hơn một kết quả, bạn sẽ muốn lặp lại các mục trong đối tượng.

Nếu bạn đang mong đợi chỉ một hàng trở lại, thì hãy thử sử dụng $ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row


2

Để sử dụng như một mảng kết hợp:

$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

Sử dụng

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

Để có được các định dạng khác, chỉ cần thay đổi ARRAY_Adựa trên tài liệu cho$wpdb->get_results() . Câu trả lời của Pippin phù hợp với hầu hết các đối tượng sử dụng.

Để sử dụng một hàng như một mảng được lập chỉ mục số

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

Để sử dụng một hàng trong một mảng có các khóa là khóa chính từ cơ sở dữ liệu của bạn (thường là một idcột). Có thể hiệu quả hơn phương pháp mảng kết hợp.

$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

Mã này hoạt động hoàn hảo đối với tôi:

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;}    
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.