Buscar matriz com $ wpdb


9

Estou tentando converter esse código para usar o $ 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']));
        }   
    }

Então eu fiz:

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

Mas como posso buscar a matriz? Agradeço antecipadamente a ajuda.

Respostas:


22

wpdbO get_resultsmétodo usa um segundo argumento opcional que permite especificar como os dados são retornados. O retorno padrão é um objeto. Mas você também pode configurá-lo para ...

OBJECT - result será produzido como uma matriz numerada de objetos de linha indexada.

OBJECT_K - o resultado será exibido como uma matriz associativa de objetos de linha, usando os valores da primeira coluna como chaves (as duplicatas serão descartadas).

ARRAY_A - o resultado será exibido como uma matriz numericamente indexada de matrizes associativas, usando nomes de colunas como chaves.

ARRAY_N - o resultado será exibido como uma matriz numerada de matrizes indexadas numericamente.

(do codex )

Você provavelmente quer ARRAY_A.

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

Infelizmente, wpdbnão permite "transmitir" resultados como você está fazendo, portanto, você precisará usar um loop foreach.

<?php
foreach($query as $row)
{
    // do stuff with $row here.
}

Ok obrigado. Mas e essa linha? while($row = mysql_fetch_array($query_exec)) {
Mark

Veja minha edição, você só precisa usar um foreachloop em vez de while.
Chrisguitarguy

Porra, eu perdi o ARRAY_A pela primeira vez, então eu recebi um erro no meu foreach. Muito obrigado.
Mark
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.