¿Cómo obtengo cada fila como un array asociativo usando $wpdb?

26 nov 2012, 21:25:43
Vistas: 70K
Votos: 14

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.

0
Todas las respuestas a la pregunta 1
3
32

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í.
}
26 nov 2012 21:35:40
Comentarios

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

Mark Mark
26 nov 2012 21:43:04

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

chrisguitarguy chrisguitarguy
26 nov 2012 21:45:28

Rayos, la primera vez no vi el ARRAY_A, así que me dio un error en mi foreach. Muchas gracias.

Mark Mark
26 nov 2012 21:49:57