¿Cómo obtengo cada fila como un array asociativo usando $wpdb?
Estoy tratando de convertir este código para usar $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']));
}
}
Así que hice:
$query = $wpdb->get_results("SELECT * FROM videos");
Pero ¿cómo puedo obtener el array? Gracias de antemano por la ayuda.
El método get_results
de wpdb
acepta un segundo parámetro opcional que te permite especificar cómo se devuelven los datos. Por defecto, el resultado es un objeto. Pero también puedes configurarlo como...
OBJECT - el resultado será devuelto como un array indexado numéricamente de objetos de fila.
OBJECT_K - el resultado será devuelto como un array asociativo de objetos de fila, usando los valores de la primera columna como claves (los duplicados se descartarán).
ARRAY_A - el resultado será devuelto como un array indexado numéricamente de arrays asociativos, usando los nombres de las columnas como claves.
ARRAY_N - el resultado será devuelto como un array indexado numéricamente de arrays indexados numéricamente.
(del codex)
Probablemente quieras usar ARRAY_A
.
<?php
$query = $wpdb->get_results("SELECT * FROM videos", ARRAY_A);
Desafortunadamente, wpdb
no te permite "transmitir" los resultados como estás haciendo, así que necesitarás usar un bucle foreach.
<?php
foreach($query as $row)
{
// hacer algo con $row aquí.
}

Vale, gracias. ¿Pero qué pasa con esta línea?
while($row = mysql_fetch_array($query_exec)) {

Mira mi edición, solo necesitas usar un bucle foreach
en lugar de while
.
