簡體   English   中英

消息:count():參數必須是在 centos 上實現可數 codeigniter 的數組或 object

[英]Message: count(): Parameter must be an array or an object that implements Countable codeigniter on centos

查看我的查詢

Select * from join_chat where
(user_1 = '24' and user_2 = '26') or
(user_1 = '26' and user_2 = '24')

請從我的 api 提供解決此錯誤的建議

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>


</div>{"responce":true,"data":"20"}

2020-05-09 23:16:43.302 28439-30249/techline.carsapp W/System.err: org.json.JSONException: Value Select of type java.lang.String cannot be converted to JSONObject 2020-05-09 23: 16:43.302 28439-30249/techline.carsapp W/System.err: at org.json.JSON.typeMismatch(JSON.java:112) 2020-05-09 23:16:43.302 28439-30249/techline.carsapp W/ System.err: at org.json.JSONObject.(JSONObject.java:163) 2020-05-09 23:16:43.302 28439-30249/techline.carsapp W/System.err: at org.json.JSONObject.(JSONObject 。 43.303 28439-30249/技術熱線。 carsapp W/System.err: at util.CommonAsyTask.doInBackground(CommonAsyTask.java:23) 2020-05-09 23:16:43.303 28439-30249/techline.carsapp W/System.err: at android.os.AsyncTask$2 .call(AsyncTask.java:333) 2020-05-09 23:16:43.303 28439-30249/techline.carsapp W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 2020 -05-09 23:16:43.303 28439-30249/techline.carsApp w/system.err:zc31b32364ce19ca8fcd150a417ecce58z.os.os.asenctask 28439-30249/techline.carsapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 2020-05-09 23:16:43.303 28439-30249/techline.carsapp W/System .err:在 java.util.concurrent.Thread PoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 2020-05-09 23:16:43.303 28439-30249/techline.carsapp W/System.err: at java.lang.Thread.run(Thread.java:764)

消息:count():參數必須是一個數組或實現 Countable 的 object

文件名:控制器/Api.php

行號:801

    <p>Backtrace:</p>

下面controller中的方法

public function send_chat_data()
{
    $this->load->library('form_validation');
    $this->form_validation->set_rules('join_id', 'join_id', 'trim|required');
    $this->form_validation->set_rules('sender_id', 'sender_id', 'trim|required');
    $this->form_validation->set_rules('message', 'message', 'trim|required');

    if ($this->form_validation->run() == false) {
        $data["responce"] = false;
        $data["error"] = 'join id is required';
    } else {
        $post_date=date("Y-m-d m:i:s");
        $send_chat = array(
                               "join_id"=>$this->input->post("join_id"),
                               "sender_id"=>$this->input->post("sender_id"),
                               "message"=>$this->input->post("message"),
                               "created_date"=>$post_date
                               );

        $this->db->insert("chat", $send_chat);
        $insertid = $this->db->insert_id();

        $q = $this->db->query("Select * from join_chat where join_id= '".$this->input->post("join_id")."' limit 1");
        $recever_id = 0;
        $row = $q->row();
        if ($row->user_1 == $this->input->post("sender_id")) {
            $recever_id = $row->user_2;
        } else {
            $recever_id = $row->user_1;
        }
        $q2 = $this->db->query("Select * from chat where chat_id= '".$insertid."' limit 1");


        $chat = $q2->row();
        $data["responce"] = true;
        $data["data"] = $chat;



        $q_fcm = $this->db->query("Select * from users where user_id= '".$recever_id."' limit 1");
        $row_fcm = $q_fcm->row();

        $registatoin_ids =$row_fcm->user_gcm_code;


        $message["title"] = $this->config->item('app_name');
        $message["message"] = $this->input->post("message");
        $message["image"] = "";
        $message["created_at"] = date("Y-m-d h:i:s");
        $message["obj"] = $chat;

        $this->load->helper('gcm_helper');
        $gcm = new GCM();
        //$result = $gcm->send_topics("/topics/rabbitapp",$message ,"ios");

        $result = $gcm->send_notification(array($registatoin_ids), $message, "android");
    }
    echo json_encode($data);
}

錯誤來自下面的行

$row = $q->row();

正如我所見,您的問題中的問題是您正在嘗試計算非數組或不可數的 object。

想法

  1. 在您的整個代碼中,您沒有編寫似乎導致問題的count() ,為什么?
  2. 為什么要計算$q->row(); 當您自己將結果限制為 1 時// as you said the problem is here $row = $q->row();

可能的解決方案

當你使用row()$q->row(); 你得到一個不可數的 object

// row() dummy data
stdClass Object
(
    [id] => 15
    [event_id] => 3
    [event_image] => c1fa8a5d5505047251fd928aa312b16c.jpg
)

但是當你使用result()$q->result(); ,它將產生一個對象數組,或者在result_array()的情況下,一個 arrays 數組,即使您將它們限制為一個。

// result() dummy data -- same as result_object()
(
    [0] => stdClass Object
        (
            [id] => 15
            [event_id] => 3
            [event_image] => c1fa8a5d5505047251fd928aa312b16c.jpg
        )

)

// result_array() dummy data
Array
(
    [0] => Array
        (
            [id] => 15
            [event_id] => 3
            [event_image] => c1fa8a5d5505047251fd928aa312b16c.jpg
        )

)

它們現在都是一個數組,因此是可數的。

因此,如果必須計算,請使用$q->result();
另外,如果你想計算“結果”的數量$q->row(); 有,你可以用
count((array) ($q->row()));
這將在這里返回 3。 {id}, {event_id}, {event_image} 在此處閱讀有關它的更多信息

希望它可以幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM