Where_in 使用 codeigniter 构建的查询中的语句,其字符串应为数组
Where_in statement in a query built with codeigniter with an string that should be an array
查询的 where_in
子句中的 CodeIgniter 有问题。
让我们看一下描述问题的查询:
WHERE `table`.`table_row` IN ('7296 ,7314 {and so on});
这是我在 CodeIgniter(表达式引擎)中查询的结果是
$sql = ee()->db->where_in('table.table_row', $entry_ids);
我的数组 $entry_ids
是一个字符串,我之前在我的代码中获得:
$entry_ids = $ee->TMPL->fetch_param('e_id');
要工作,我的查询应该是:
WHERE `table`.`table_row` IN ('7296' ,'7314' {and so on});
我已经尝试指定我的数组实际上是一个数组,而不是一个字符串:
$entry_ids[] = $ee->TMPL->fetch_param('e_id');
但实际上,什么都没有改变。
因此您将 ID 列表存储为字符串,您希望将其作为 IN 语句进行查询。
首先将你的字符串拆分成一个数组:
如果您的 ID 由字符串分隔:
$id_array = explode(" ", $string_of_ids);
如果您的 ID 以逗号分隔:
$id_array = explode(",", $string_of_ids);
如果您的 ID 由逗号和单引号分隔:
$id_array = explode("','", $string_of_ids);
然后您可以将 $id_array 传递到您的查询中:
如果您的 id 列是 int 类型:
$this->db->where_in('table.table_row', $id_array);
如果您的 id 列是字符串类型:
只需在您的 ID 中添加单引号:
$id_array = "'" . join("','", $id_array) . "'";
$this->db->where_in('table.table_row', $id_array);
然后,如果您的 $string_of_ids 包含您的 ID 周围的引号,您可能可以跳过一个步骤,只需执行以下操作:
$id_array = explode(",", $string_of_ids);
这应该会保留您的报价,因此您不必再次加入。
希望对您有所帮助:
使用 explode
将字符串放入数组
$string = '7296 ,7314'; // string of ids
$entry_ids = explode(',', $string);
//print_r($entry_ids);
$this->db->where_in('table.table_row',$entry_ids); //use in where clause
查询的 where_in
子句中的 CodeIgniter 有问题。
让我们看一下描述问题的查询:
WHERE `table`.`table_row` IN ('7296 ,7314 {and so on});
这是我在 CodeIgniter(表达式引擎)中查询的结果是
$sql = ee()->db->where_in('table.table_row', $entry_ids);
我的数组 $entry_ids
是一个字符串,我之前在我的代码中获得:
$entry_ids = $ee->TMPL->fetch_param('e_id');
要工作,我的查询应该是:
WHERE `table`.`table_row` IN ('7296' ,'7314' {and so on});
我已经尝试指定我的数组实际上是一个数组,而不是一个字符串:
$entry_ids[] = $ee->TMPL->fetch_param('e_id');
但实际上,什么都没有改变。
因此您将 ID 列表存储为字符串,您希望将其作为 IN 语句进行查询。
首先将你的字符串拆分成一个数组:
如果您的 ID 由字符串分隔:
$id_array = explode(" ", $string_of_ids);
如果您的 ID 以逗号分隔:
$id_array = explode(",", $string_of_ids);
如果您的 ID 由逗号和单引号分隔:
$id_array = explode("','", $string_of_ids);
然后您可以将 $id_array 传递到您的查询中:
如果您的 id 列是 int 类型:
$this->db->where_in('table.table_row', $id_array);
如果您的 id 列是字符串类型: 只需在您的 ID 中添加单引号:
$id_array = "'" . join("','", $id_array) . "'";
$this->db->where_in('table.table_row', $id_array);
然后,如果您的 $string_of_ids 包含您的 ID 周围的引号,您可能可以跳过一个步骤,只需执行以下操作:
$id_array = explode(",", $string_of_ids);
这应该会保留您的报价,因此您不必再次加入。
希望对您有所帮助:
使用 explode
将字符串放入数组
$string = '7296 ,7314'; // string of ids
$entry_ids = explode(',', $string);
//print_r($entry_ids);
$this->db->where_in('table.table_row',$entry_ids); //use in where clause