【问题标题】:Codeigniter:value getting appended from an arrayCodeigniter:值从数组中附加
【发布时间】:2013-12-09 19:17:19
【问题描述】:
public function func1()
{
    $this->func();
    $result1 = $this->result;

    foreach ($result1 as $row) {
        $this->load->model('test_model');
        $this->db->select('name');
        $this->db->from('place');

        $string = '';

        $string = $row[state_name];

        $this->db->where('state'=,"$string");
        $query = $this->db->get();

        return $query->result_array();
    }

}

其中$this->func(); 正在获取一个包含名称字符串数组的数组,我在func1(select)where 子句中使用每个值作为条件。我正在使用foreach 循环从func 的结果集中获取每个字符串,稍后我尝试从func1 中的where 子句中选择一个匹配的名称,但我遇到了错误

A Database Error Occurred
    Error Number: 1064
    SELECT `name` FROM (`place`) WHERE `state=` 'place1,place2, place3,place4';

来自foreach 的所有值都被附加到同一个查询中,在我的例子中,每次迭代应该只获取一个值并执行SELECT 查询并返回结果。

【问题讨论】:

  • $this->db->where('state'=,"$string"); 是错字吗?因为='state' 之外。这里还有一个错字$string = $row[state_name]; 除非state_name 是一个常数?
  • $this->db->where('state',"$string"); remove =
  • 另外,我猜 $this->func 不是返回一个值数组,而是所有附加的值,检查你的 func() 看看它返回什么,并更正你提到的 where 语句作者:努尔

标签: php mysql sql arrays codeigniter


【解决方案1】:

你可以试试这个:

public function func1()
{
    $this->func();
    $result1 = $this->result;

    $data = null; $i=0;
    foreach ($result1 as $row) {
        $this->load->model('test_model');
        $this->db->select('name');
        $this->db->from('place');

        $string = '';

        $string = $row['state_name'];

        $this->db->where('state'=,"$string");
        $query = $this->db->get();

        $query->result_array();
        $data[$i] = $query->result_array;
    }
  return $data;

}

【讨论】:

    猜你喜欢
    • 2022-10-25
    • 2018-08-03
    • 1970-01-01
    • 2013-10-25
    • 2015-12-20
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多