Cum pot prelua fiecare rând ca array asociativ folosind $wpdb?

26 nov. 2012, 21:25:43
Vizualizări: 70K
Voturi: 14

Încerc să convertesc acest cod pentru a folosi $wpdb.

$data = array();

$query = "SELECT * FROM videos";
$query_exec = mysql_query($query) or die();

// Cât timp preluăm rânduri ca array
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']));
        }   
    }

Așa că am făcut:

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

Dar cum pot prelua array-ul? Mulțumesc anticipat pentru ajutor.

0
Toate răspunsurile la întrebare 1
3
32

Metoda get_results din wpdb acceptă un al doilea argument opțional care vă permite să specificați modul în care datele sunt returnate. Valoarea implicită este un obiect. Dar puteți seta și la...

OBJECT - rezultatul va fi afișat ca un array indexat numeric de obiecte rând.

OBJECT_K - rezultatul va fi afișat ca un array asociativ de obiecte rând, folosind valorile primei coloane ca chei (duplicatele vor fi eliminate).

ARRAY_A - rezultatul va fi afișat ca un array indexat numeric de array-uri asociative, folosind numele coloanelor ca chei.

ARRAY_N - rezultatul va fi afișat ca un array indexat numeric de array-uri indexate numeric.

(din codex)

Probabil doriți ARRAY_A.

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

Din păcate, wpdb nu vă permite să "transmiteți" rezultatele așa cum faceți, așa că va trebui să folosiți o buclă foreach.

<?php
foreach($query as $row)
{
    // faceți ceva cu $row aici.
}
26 nov. 2012 21:35:40
Comentarii

Bine, mulțumesc. Dar ce zici de această linie? while($row = mysql_fetch_array($query_exec)) {

Mark Mark
26 nov. 2012 21:43:04

Vezi editarea mea, trebuie doar să folosești o buclă foreach în loc de while.

chrisguitarguy chrisguitarguy
26 nov. 2012 21:45:28

La naiba, am ratat ARRAY_A prima dată, așa că am primit o eroare în foreach-ul meu. Mulțumesc foarte mult.

Mark Mark
26 nov. 2012 21:49:57