Получить массив с $ 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

wpdb«S get_resultsметод принимает необязательный второй аргумент , который позволяет определить , как возвращаются данные. Возврат по умолчанию - это объект. Но вы также можете установить его на ...

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.
}
chrisguitarguy
источник
Хорошо, спасибо. Но как насчет этой линии? while($row = mysql_fetch_array($query_exec)) {
Марк
Смотрите мои правки, вам просто нужно использовать foreachцикл вместо while.
chrisguitarguy
Черт, я пропустил ARRAY_A в первый раз, поэтому я получил ошибку в foreach. Большое спасибо.
Марк