【问题标题】:loop through associative array and passed key in sql query循环遍历关联数组并在 sql 查询中传递键
【发布时间】:2015-01-09 06:55:18
【问题描述】:

我有要求,当用户选中复选框时,我将复选框值作为键值对

Array( 
    [checkboxname] => Array( 
           [1] => on 
           [5] => on 
           [12] => on 
           [15] => on 
       )
)

我必须在 sql 语句中传递这个键并从这个键中检索另一个复选框。

这是我必须写的查询

foreach($array as $key => $value)
        {

        }

$reult = $this->db->get_where('select_another_value ', array('id' => $key))->result_array();

我应该在查询中写什么而不是$key

【问题讨论】:

  • 你真正想要什么?checkboxname 的所有结果?
  • @ShaifulIslam 当用户点击 parent_checkbox 他​​应该看到他的 child_chekbox

标签: php sql arrays codeigniter associative-array


【解决方案1】:

假设您想从数据库中获取所有已检查的check boxes 值,并在数组键中获取Id 并使用where_in() 方法并在数组中传递数组键,请参见下面的示例代码

$all_keys = array_keys($arr['checkboxname']);
$result = $this->db->where_in('id', $all_keys)
      ->get('select_another_value')->result_array();

【讨论】:

  • 我知道这一点,但我想要的是从数组 array(key => 'on') 中检索此密钥
  • 好的,如果你需要数组的第一个键,试试这个reset($arr); $key = key($arr)
【解决方案2】:

试试 -

foreach($array as $key => $value){
    $reult[] = $this->db->get_where('select_another_value ', array('id' => $key))->result_array();
}

或者你可以试试 -

$keys = array();
foreach($array as $key => $value){
    $keys[] = $key;
}
if (count($keys) > 1) {
    $where = "  id IN (".implode(',', $keys).")";
} else {
    $where = " id = '".$key[0]."'";
}
$this->db->where($where);

如果你想避免在循环内运行查询。

【讨论】:

  • 你的意思是$reult只有最后一个key记录??
  • @sgt 那么返回语句应该是什么 return $reult[];或者只返回 $reult;
  • 为什么需要return声明? @SoftwareDev
  • @sgt from this query 我必须在 db 中显示与此键相关的另一个复选框
猜你喜欢
  • 1970-01-01
  • 2019-03-06
  • 2020-10-19
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 2013-07-05
  • 2014-06-14
相关资源
最近更新 更多