Hướng dẫn convert mysql object to array - chuyển đổi đối tượng mysql thành mảng

Tôi đang cố gắng để có một truy vấn cơ sở dữ liệu là một đối tượng được chuyển đổi thành một mảng kết hợp, để tôi có thể sử dụng nó trong lớp lịch trong codeigniter.

Đây là mô hình của tôi:

<?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;
        }
    }

Và đây là lỗi tôi nhận được:

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

Bất kỳ ý tưởng?

Được hỏi ngày 16 tháng 9 năm 2010 lúc 11:02Sep 16, 2010 at 11:02

Hướng dẫn convert mysql object to array - chuyển đổi đối tượng mysql thành mảng

Kiểm tra hướng dẫn video này, nó sẽ giúp bạn-> http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-the-calendar-library/

Mô hình của bạn sẽ trông như thế này:

    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;
    }

Và bộ điều khiển của bạn:

    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);
}

Đã trả lời ngày 16 tháng 9 năm 2010 lúc 11:14Sep 16, 2010 at 11:14

Hướng dẫn convert mysql object to array - chuyển đổi đối tượng mysql thành mảng

ChristophechristopheChristophe

4.7585 Huy hiệu vàng41 Huy hiệu bạc83 Huy hiệu đồng5 gold badges41 silver badges83 bronze badges

3

Vấn đề không phải là trong việc bạn sử dụng result_array (), nhiều hơn là sau này bạn trả về $ dữ liệu trực tiếp. $ query = $ this-> db-> truy vấn () sau đó sử dụng $ query-> result_array () trong foreach. Sau đó, bạn có thể trả về $ dữ liệu sau khi xây dựng nó trong foreach.

Câu trả lời khác là một cách viết dài hạn như sau:

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

Nhưng tất nhiên điều đó sẽ trả về một mảng các đối tượng, không phải là một mảng đa chiều.

Đã trả lời ngày 16 tháng 9 năm 2010 lúc 13:01Sep 16, 2010 at 13:01

Phil Sturgeonphil SturgeonPhil Sturgeon

30.5K12 Huy hiệu vàng77 Huy hiệu bạc117 Huy hiệu đồng12 gold badges77 silver badges117 bronze badges

2

Sử dụng dưới đây phương pháp đơn giả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

Đã trả lời ngày 10 tháng 4 năm 2015 lúc 13:41Apr 10, 2015 at 13:41

Hướng dẫn convert mysql object to array - chuyển đổi đối tượng mysql thành mảng

KirankiranKiran

1.1192 Huy hiệu vàng13 Huy hiệu bạc27 Huy hiệu đồng2 gold badges13 silver badges27 bronze badges

Đây là giải pháp cho Codeigniter-3

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

HOẶC

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

Lưu ý: Kết quả () Hàm chấp nhận "mảng" hoặc "đối tượng" làm tham số. Mặc định là "Đối tượng" result() function accept "array" or "object" as parameter. Default is "object"

Hướng dẫn convert mysql object to array - chuyển đổi đối tượng mysql thành mảng

Matt Raines

4.0698 Huy hiệu vàng30 Huy hiệu bạc34 Huy hiệu đồng8 gold badges30 silver badges34 bronze badges

Đã trả lời ngày 21 tháng 8 năm 2016 lúc 22:02Aug 21, 2016 at 22:02

Hướng dẫn convert mysql object to array - chuyển đổi đối tượng mysql thành mảng

Sumon Sarkersumon SarkerSumon Sarker

2.6161 Huy hiệu vàng22 Huy hiệu bạc36 Huy hiệu đồng1 gold badge22 silver badges36 bronze badges