如何从$ wpdb-> get_results解析行结果


11

我有以下几点:

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

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

如何从$ row获得名为“ id”和“ name”的列?

Answers:


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

更多信息在这里


2
不知道这是否是正确的方法。为了安全起见,我认为应该将结果保存到变量中并对其使用foreach。例如$ results = $ wpdb-> get_results($ sql); 然后使用foreach($ results作为$ value)。
Gogol 2013年

在这种情况下,它实际上并不重要,因为它返回数组,对象或null,因此不存在获取“循环不友好”资源的任何风险。那表示您可能想再次遍历它们,寻找其他东西,如果可以的话,一定要存储它。不要查询两次
Garet Claborn

2

始终尝试使用WordPress Codex:http//codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

本质上给定默认语法,这里的变量$ row是一个包含结果的对象。您可以交替指定结果的类型(数字数组,关联数组)。

假设只有一个结果,那么$ row-> id和$ row-> name应该会为您提供信息。

如果返回多个结果,则需要遍历对象中的条目。

如果您只希望返回一行,请尝试使用$ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row


2

用作关联数组:

$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

用法

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

要获取其他格式,只需ARRAY_A根据的文档进行$wpdb->get_results()更改。Pippin的答案适用于大多数对象。

将一行用作数字索引数组

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

要使用其键是数据库的主键的数组中的一行(通常是一id列)。可能比关联数组方法更有效。

$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

这段代码非常适合我:

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;}    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.