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"