recorrer fetch_assoc asociativo array php mysql codeigniter

fetch_assoc - foreach php



Conversión de un objeto de resultado Mysql a una matriz asociativa(CodeIgniter) (4)

Mira este video tutorial, te ayudará -> http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-the-calendar-library/

Su modelo debe verse así:

function getAllDiaries($year,$month) { $q = $this->db->query("SELECT day AND entry FROM diary WHERE month=$month AND year=$year"); if($q->num_rows() > 0): foreach($q->result() as $row): $data[] = $row; endforeach; return $data; else: return false; endif; }

y su controlador:

function index($year = null, $month = null) { $this->load->model(''Get_diary_model''); if (!$year) { $year = date(''Y''); } if (!$month) { $month = date(''m''); } $data[''calendar''] = $this->Get_diary_model->getAllDiaries($year, $month); }

Estoy tratando de obtener una consulta de base de datos que es un objeto convertido a una matriz asociativa, para que pueda usarlo en la clase de calendario en codeigniter.

Este es mi modelo:

<?php class Get_diary_model extends Model { function getAllDiaries($year,$month) { $data = $this->db->query("SELECT day AND entry FROM diary WHERE month=$month AND year=$year"); // the entries for the relevant month and year foreach($data->result_array() as $row) { // return result as assoc array to use in calendar echo $row[''day'']; echo $row[''entry'']; } return $data; } }

y este es el error que obtengo:

atal error: Cannot use object of type CI_DB_mysql_result as array in C:/wamp/www/mm/system/libraries/Calendar.php on line 219

¿Algunas ideas?


El problema no estaba en el uso de result_array (), más que luego devuelve $ datos directamente. $ query = $ this-> db-> query () luego use $ query-> result_array () en el foreach. Luego puede devolver $ datos después de compilarlo en foreach.

La otra respuesta es una manera larga de escribir lo siguiente:

function getAllDiaries($year,$month) { $sql = "SELECT day AND entry FROM diary WHERE month=$month AND year=$year"; return $this->db->query($sql)->result(); }

Pero, por supuesto, eso devolverá una matriz de objetos, no una matriz multidimensional.


Use el método simple a continuación,

$query = $this->db->get_where(''table'', array(''table_id'' => $id)); $queryArr = $query->result(); foreach ($queryArr[0] as $key=>$val) { $row[$key]=$val; } print_r($row); //this will give associative array


Aquí está la solución para CodeIgniter-3

function getAllDiaries(){ $query = $this->db->query("YOUR QUERY HERE"); return $query->result(''array''); }

O

function getAllDiaries(){ return $this->db->query("YOUR QUERY HERE")->result(''array''); }

Nota: la función result () acepta "matriz" u "objeto" como parámetro. El valor predeterminado es "objeto"