$ wpdbから行の結果を解析する方法-> get_results


10

私は以下を持っています:

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

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

$ idから 'id'および 'name'という名前の列を取得するにはどうすればよいですか?

回答:


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 as $ value)を使用します。
Gogol 2013

このインスタンスでは配列、オブジェクト、またはnullが返されるため、実際には問題になりません。「ループに適さない」リソースを取得するリスクはありません。それはあなたが何かのためにそれらを再びループしたいかもしれないと言った、そしてもしそうならそれを間違いなく保存する。2回クエリしないでください
Garet Claborn 2017年

2

常にWordPress Codexを試してください:http : //codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

基本的にデフォルトの構文が与えられている場合、ここの変数$ rowは結果を含むオブジェクトです。または、結果のTYPE(数値配列、連想配列)を指定することもできます。

結果が1つだけだとすると、$ row-> idと$ row-> nameで情報が得られます。

複数の結果が返された場合は、オブジェクトのエントリをループする必要があります。

1行だけ戻ることが予想される場合は、$ 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()基づいて変更するだけです。ピピンの答えは、ほとんどのオブジェクトの使用に適しています。

1行を数値インデックス配列として使用するには

$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列)である配列の1つの行を使用するには、おそらく連想配列法よりも効率的です。

$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;}    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.