Cómo analizar los resultados de filas de $wpdb -> get_results

20 jul 2011, 00:42:35
Vistas: 128K
Votos: 15

Tengo lo siguiente:

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

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

¿Cómo obtengo las columnas llamadas 'id' y 'name' de $row?

0
Todas las respuestas a la pregunta 4
2
22
foreach( $wpdb->get_results("SELECT * FROM nombre_de_tu_tabla WHERE id LIKE' . $id . ';") as $key => $row) {
// cada columna en tu fila será accesible así
$mi_columna = $row->nombre_de_columna;}

Más información aquí

20 jul 2011 02:20:01
Comentarios

No estoy seguro si esta es la forma correcta. Creo que deberías guardar el resultado en una variable y usar foreach sobre esa variable, para mayor seguridad. Por ejemplo: $results = $wpdb->get_results($sql); y luego usar foreach($results as $value).

Gogol Gogol
13 sept 2013 14:15:57

Realmente no debería importar en este caso ya que devuelve un array, un objeto o null, no debería haber riesgo de obtener un recurso que no sea "amigable" para bucles. Dicho esto, podrías necesitar iterar nuevamente para otra cosa, y si es así definitivamente deberías almacenarlo. No hagas la consulta dos veces

That Realtor Programmer Guy That Realtor Programmer Guy
30 oct 2017 00:18:10
0

Para usar como un array asociativo:

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

// $obj ahora es la fila seleccionada si se encontró una coincidencia

Uso

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

Para obtener otros formatos, simplemente cambia ARRAY_A según la documentación de $wpdb->get_results(). La respuesta de Pippin es apropiada para la mayoría de los usos con objetos.

Para usar una fila como un array indexado numéricamente

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

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

Para usar una fila en un array cuyas claves son la clave primaria de tu base de datos (a menudo una columna id). Posiblemente más eficiente que el método de array asociativo.

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

//Uso

$something = $obj->column_name;

//Recuerda que también puedes iterar sobre objetos
foreach($obj as $col => $val)
    echo $col . ': ' . $val . PHP_EOL;
31 oct 2017 01:47:50
0

Este código funciona perfectamente para mí:

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;}    
15 mar 2018 18:52:59
0

Siempre consulta el Codex de WordPress: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Esencialmente, dada la sintaxis predeterminada, la variable $row aquí es un objeto que contiene tus resultados. Alternativamente, podrías especificar el TIPO de resultado (array numérico, array asociativo).

Asumiendo que solo hay un resultado, entonces $row->id y $row->name deberían darte la información.

Si obtienes más de un resultado, querrás recorrer las entradas en el objeto.

Si esperas solo una fila como resultado, entonces intenta usar $wpdb->get_row http://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row

20 jul 2011 01:07:48