骚年丶 发表于 2016-8-26 10:33:44

用implode将数组转为字符串后系统还是报错。

public function style_status(){
            $this->load->model("Mall_model");
            $status = $this->input->post('status');
            $m_s_name = $this->input->post('m_s_name');
            $m_s_id = $this->Mall_model->get_ms_id($m_s_name)->result_array();
      $s_id = implode(" ",$m_s_id);
             if($status != 1 && $status != 2){
                  get_output(8052);
            }
            $result =$this->Mall_model->update_style_status($s_id, array("status" => $status));
            if($result){
                  get_output(200);
            }
    }这是controller的代码

public function update_style_status($s_id, $data){
            $this->db->where('s_id', $s_id);
            return $this->db->update(MALL_STYLE, $data);
    } 这是model的代码


<p>Severity: Notice</p>
<p>Message:Array to string conversion</p>
<p>Filename: controllers/Mall_shops.php</p>
<p>Line Number: 298</p>
这是报的错。

求大神解救

Closer 发表于 2016-8-26 11:09:19

骚年丶 发表于 2016-8-26 10:58
这是改进后的,我直接通过自增ID取到m_s_id,不转换为字符串,直接将数组传递到MODEL的方法里面。
这是 ...

會報錯正常,因為 where in 也是吃一維陣列
也就是你拿到 $m_s_id 時,必須跑 foreach() 去獲取 id
得到這樣的陣列 :
array(
0=>152,
1=>77,
2=>124,
3=>7789
)

才能放到 where in 裡面操作

 

Closer 发表于 2016-8-26 10:39:32

implode() 應該只支持一維陣列
但你 result_array() 出來的會是二維

骚年丶 发表于 2016-8-26 10:43:47

Closer 发表于 2016-8-26 10:39
implode() 應該只支持一維陣列
但你 result_array() 出來的會是二維

那我用serialize可以吗?

Closer 发表于 2016-8-26 10:47:18

骚年丶 发表于 2016-8-26 10:43
那我用serialize可以吗?

得看你要達到甚麼目的
你的需求是甚麼 ?

骚年丶 发表于 2016-8-26 10:48:49

Closer 发表于 2016-8-26 10:47
得看你要達到甚麼目的
你的需求是甚麼 ?

这个数组应该只有一组数据,我只想要数组里的value。

骚年丶 发表于 2016-8-26 10:58:22

public function style_status(){
            $this->load->model("Mall_model");
            $status = $this->input->post('status');
            $id = $this->input->post('id');
            $m_s_id = $this->Mall_model->get_ms_id($id)->result_array();
   //   $s_id = serialize($m_s_id);
       // $s_id = implode(" ",$m_s_id);
           if($status != 1 && $status != 2){
                    get_output(8052);
            }
            $result =$this->Mall_model->update_style_status($m_s_id, array("status" => $status));
            if($result){
                    get_output(200);
            }
    }这是改进后的,我直接通过自增ID取到m_s_id,不转换为字符串,直接将数组传递到MODEL的方法里面。
public function update_style_status($s_id, $data){
            $this->db->where_in('s_id', $s_id);
            return $this->db->update(MALL_STYLE, $data);
    } 这是改了后的MODEL,把where改为where_in。但还是要报错

<p>Severity: Notice</p>
<p>Message:Array to string conversion</p>
<p>Filename: database/DB_query_builder.php</p>
<p>Line Number: 805</p> 这是报的错。。怎么破。

骚年丶 发表于 2016-8-26 11:36:31

Closer 发表于 2016-8-26 11:09
會報錯正常,因為 where in 也是吃一維陣列
也就是你拿到 $m_s_id 時,必須跑 foreach() 去獲取 id
得到 ...

好的,解决了。。谢谢大神。。
页: [1]
查看完整版本: 用implode将数组转为字符串后系统还是报错。