Come recuperare ogni riga come array associativo usando $wpdb?

26 nov 2012, 21:25:43
Visualizzazioni: 70K
Voti: 14

Sto cercando di convertire questo codice per utilizzare $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']));
        }   
    }

Quindi ho fatto:

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

Ma come posso recuperare l'array? Grazie in anticipo per l'aiuto.

0
Tutte le risposte alla domanda 1
3
32

Il metodo get_results di wpdb accetta un secondo argomento opzionale che permette di specificare come i dati vengono restituiti. Il valore predefinito è un oggetto. Ma puoi anche impostarlo a...

OBJECT - il risultato sarà restituito come un array numerico di oggetti riga.

OBJECT_K - il risultato sarà restituito come un array associativo di oggetti riga, utilizzando i valori della prima colonna come chiavi (i duplicati verranno scartati).

ARRAY_A - il risultato sarà restituito come un array numerico di array associativi, utilizzando i nomi delle colonne come chiavi.

ARRAY_N - il risultato sarà restituito come un array numerico di array numerici.

(dal codex)

Probabilmente vorrai usare ARRAY_A.

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

Sfortunatamente, wpdb non permette di "scorrere" i risultati come stai facendo, quindi dovrai utilizzare un ciclo foreach.

<?php
foreach($query as $row)
{
    // fai qualcosa con $row qui.
}
26 nov 2012 21:35:40
Commenti

Ok, grazie. Ma che mi dici di questa riga? while($row = mysql_fetch_array($query_exec)) {

Mark Mark
26 nov 2012 21:43:04

Vedi la mia modifica, devi solo usare un ciclo foreach invece del while.

chrisguitarguy chrisguitarguy
26 nov 2012 21:45:28

Cavolo, la prima volta ho saltato l'ARRAY_A, quindi ho avuto un errore nel mio foreach. Grazie mille.

Mark Mark
26 nov 2012 21:49:57