$ wpdbで配列を取得する


9

$ wpdbを使用するようにこのコードを変換しようとしています。

$data = array();

$query = "SELECT * FROM videos";
$query_exec = mysql_query($query) or die();

while($row = mysql_fetch_array($query_exec)) {
    if ( $row['video'] == "http://youtu.be/".end(explode('http://youtu.be/',$row['video'])) ) {
            $data[$row['id']] = end(explode('http://youtu.be/', $row['video']));
        } else {
            $data[$row['id']] = end(explode('?v=', $row['video']));
        }   
    }

だから私はしました:

$query = $wpdb->get_results("SELECT * FROM videos");

しかし、どうすれば配列をフェッチできますか?よろしくお願いします。

回答:


22

wpdbget_resultsメソッドは、データを返す方法を指定できるオプションの2番目の引数を取ります。デフォルトの戻り値はオブジェクトです。ただし、次のように設定することもできます...

OBJECT-結果は、行オブジェクトの数値でインデックス付けされた配列として出力されます。

OBJECT_K-結果は、最初の列の値をキーとして使用して、行オブジェクトの連想配列として出力されます(重複は破棄されます)。

ARRAY_A-結果は、列名をキーとして使用して、連想配列の数値インデックス付き配列として出力されます。

ARRAY_N-結果は、数値でインデックス付けされた配列の数値でインデックス付けされた配列として出力されます。

コーデックスから)

あなたはおそらく望みARRAY_Aます。

<?php
$query = $wpdb->get_results("SELECT * FROM videos", ARRAY_A);

残念ながら、現在のwpdbように結果を「ストリーミング」することはできません。そのため、foreachループを使用する必要があります。

<?php
foreach($query as $row)
{
    // do stuff with $row here.
}

わかりました。しかし、この行はどうですか?while($row = mysql_fetch_array($query_exec)) {
マーク

私の編集を参照してください、あなたはforeachループの代わりに使用する必要がありますwhile
chrisguitarguy

くそー、初めてARRAY_Aを逃したので、foreachでエラーが発生しました。どうもありがとうございました。
マーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.