Como analisar os resultados da linha de $ wpdb -> get_results


10

Eu tenho o seguinte:

$query = 'SELECT * FROM wp_pod_tbl_add_questions WHERE id LIKE '. $id;

                                        $row = $wpdb -> get_results($query);

Como obtenho as colunas denominadas 'id' e 'name' de $ row?

Respostas:


18
foreach( $wpdb->get_results("SELECT * FROM your_table_name WHERE id LIKE' . $id . ';") as $key => $row) {
// each column in your row will be accessible like this
$my_column = $row->column_name;}

Mais informações aqui


2
Não tenho certeza se este é o caminho certo. Eu acho que se deve obter o resultado para uma variável e usar cada uma delas, para estar seguro. Por exemplo, $ results = $ wpdb-> get_results ($ sql); e use foreach ($ resultados como $ valor).
Gogol

realmente não deve importar nesse caso, pois retorna array, objeto ou nulo, não deve haver risco de obter um recurso "hostil ao loop". Dito isto, você pode querer percorrer novamente eles para outra coisa e, se assim for, definitivamente armazená-lo. não consulte duas vezes
Garet Claborn

2

Experimente sempre o Codex do WordPress: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Essencialmente, dada a sintaxe padrão, a variável $ row aqui é um objeto que contém seus resultados. Como alternativa, você pode especificar o TIPO de resultado (matriz numérica, matriz associativa).

Supondo apenas um resultado, $ row-> id e $ row-> name devem fornecer as informações.

Se você receber mais de um resultado, desejará fazer um loop sobre as entradas no objeto.

Se você espera apenas uma linha retornar, tente usar $ wpdb-> get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row


2

Para usar como uma matriz associativa:

$obj=[];
$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id , ARRAY_A);
foreach($rows as $row){  $obj=$row; break; }

// $obj is now the selected row if a match was found

Uso

$something = $obj['column_name'];
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL . '<br />';

Para obter outros formatos, basta alterar com ARRAY_Abase na documentação de$wpdb->get_results() . A resposta de Pippin é apropriada para a maioria dos objetos.

Para usar uma linha como uma matriz numerada indexada

$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id , ARRAY_N);
foreach($rows as $row){  $obj=$row; break; }

//Usage
foreach($obj as $col_value) echo $col_value . ' ';

Para usar uma linha em uma matriz cujas chaves são a chave primária do seu banco de dados (geralmente uma idcoluna). Possivelmente mais eficiente que o método de matriz associativa.

$rows =  $wpdb->get_results( 'SELECT * FROM `tbl_name` WHERE `id` = '.$obj_id ,  OBJECT_K);
$obj = $rows[ $obj_id ];

//Usage

$something = $obj->column_name;

//Remember you can loop over objects too
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL;

1

Este código funciona perfeito para mim:

global $wpdb;
$table_name = "my_table_name";
$myrows = $wpdb->get_results( "SELECT `id`, `name` FROM ".$table_name);
    foreach ($myrows as $details) {
      echo $details->id;
      echo $details->name;}    
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.