Как анализировать результаты строки из $ wpdb -> get_results
4 ответ
- голосов
-
- 2011-07-19
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;}
Дополнительная информация здесь
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;}
More info here
-
не уверен,что это правильный путь.Я думаю,что нужно получить результат в переменной и использовать для этогоforeach,чтобы быть в безопасности.Например.$ results=$ wpdb->get_results ($ sql);а затем используйтеforeach ($ results как $ value).not sure if this is the right way though. I think one should get the result to a variable and use foreach on that, to be safe. E.g. $results = $wpdb->get_results($sql); and then use foreach($results as $value).
- 2
- 2013-09-13
- Gogol
-
не должно иметь особого значения в этом случае,поскольку он возвращает массив,объект или нуль,не должно быть никакого риска получить ресурс "недружественный к циклу".в котором говорилось,что вы можете снова просмотреть их для чего-то еще,и если да,то обязательно сохраните его.не запрашивайте дваждыshouldn't really matter in this instance since it returns array, object or null, there shouldn't be any risk of getting a "loop unfriendly" resource. that said you may want to loop through them again for something else, and if so definitely store it. don't query twice
- 0
- 2017-10-29
- Garet Claborn
-
- 2011-07-19
Всегда пробуйте кодекс WordPress: 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
Always Try the WordPress Codex: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results
Essentially given the default syntax, the variable $row here is an object containing your results. You could alternately specify the TYPE of result (numeric array, associative array).
Assuming just one result, then $row->id and $row->name should give you the information.
If you get back more than one result, you'd want to loop over the entries in the object.
If you are expecting just one row back, then try using $wpdb->get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row
-
- 2017-10-30
Для использования в качестве ассоциативного массива:
$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()
. Ответ Пиппина подходит для большинства объектов.Чтобы использовать одну строку как массив с числовым индексом
$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;
To use as an associative 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
Usage
$something = $obj['column_name']; foreach($obj as $col => $val) echo $col . ': ' . $val . PHP_EOL . '<br />';
To get other formats, simply change
ARRAY_A
based on the documentation for$wpdb->get_results()
. Pippin's answer is appropriate for most object use.To use one row as an numerically indexed 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 . ' ';
To use one row in an array whose keys are the primary key from your database(often an
id
column). Possibly more efficient than the associative array method.$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;
-
- 2018-03-15
Этот код мне идеально подходит:
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;}
This code work perfect for me:
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;}
У меня есть следующее:
Как получить столбцы с именами "id" и "name" из $ row?