Array mit $ wpdb abrufen

9

Ich versuche, diesen Code für die Verwendung von $ wpdb zu konvertieren.

$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']));
        }   
    }

So tat ich:

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

Aber wie kann ich das Array abrufen? Vielen Dank im Voraus für die Hilfe.

Kennzeichen
quelle

Antworten:

22

wpdbDie get_resultsMethode von ' verwendet ein optionales zweites Argument, mit dem Sie angeben können, wie die Daten zurückgegeben werden. Die Standardrückgabe ist ein Objekt. Sie können es aber auch auf ...

OBJECT - Ergebnis wird als numerisch indiziertes Array von Zeilenobjekten ausgegeben.

OBJECT_K - Das Ergebnis wird als assoziatives Array von Zeilenobjekten ausgegeben, wobei die Werte der ersten Spalte als Schlüssel verwendet werden (Duplikate werden verworfen).

ARRAY_A - Ergebnis wird als numerisch indiziertes Array von assoziativen Arrays ausgegeben, wobei Spaltennamen als Schlüssel verwendet werden.

ARRAY_N - Ergebnis wird als numerisch indiziertes Array von numerisch indizierten Arrays ausgegeben.

(aus dem Kodex )

Sie wollen wahrscheinlich ARRAY_A.

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

Erlaubt wpdbIhnen leider nicht, Ergebnisse wie Sie zu "streamen", so dass Sie eine foreach-Schleife verwenden müssen.

<?php
foreach($query as $row)
{
    // do stuff with $row here.
}
chrisguitarguy
quelle
OK danke. Aber was ist mit dieser Linie? while($row = mysql_fetch_array($query_exec)) {
Mark
Siehe meine Bearbeitung, Sie müssen nur eine foreachSchleife anstelle von verwenden while.
Chrisguitarguy
Verdammt, ich habe den ARRAY_A das erste Mal verpasst, also habe ich einen Fehler in meinem Foreach bekommen. Vielen Dank.
Mark