Как получить каждую строку в виде ассоциативного массива используя $wpdb?
Я пытаюсь переписать этот код для использования $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");
Но как мне получить массив? Заранее спасибо за помощь.
Метод get_results
класса wpdb
принимает необязательный второй аргумент, который позволяет указать формат возвращаемых данных. По умолчанию возвращается объект. Но вы также можете установить его в...
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)
{
// здесь можно работать с $row.
}

Ок, спасибо. Но что насчёт этой строки?
while($row = mysql_fetch_array($query_exec)) {

Смотри мою правку, тебе просто нужно использовать цикл foreach
вместо while
.
