【问题标题】:How to get data from database by using an array of ids in codeigniter?如何通过在codeigniter中使用id数组从数据库中获取数据?
【发布时间】:2021-02-15 19:15:10
【问题描述】:

我的控制器中有一个 id 数组,该数组在视图中的表单中有复选框输入。 $toppings = $this->input->get('topping');

Array
(
  [0] => 1
  [1] => 3
  [2] => 4
)

我正在尝试从数据库中获取与数组中每个 id 相关的信息。

    $toppings = $this->input->get('topping');
    foreach ($toppings as $topping ) {
        $id = $topping;
        $toppinglist = $this->toppingmodel->find_topping($id);
        echo'<pre>'; print_r($toppinglist); die();

    }

模型类 -

function find_topping($id)
{
    $query = $this->db->get_where('Topping', array('id' => $id));
    return $query->row_array(); }

}

我得到的输出数组只是第一个 id 的数据

Array
(
  [id] => 1
  [slug] => mushroom
  [toppingName] => Mushrooms
  [price] => 50.00
)

如何获取与数组中每个 id 相关的所有数据。 (嵌套数组) 谢谢。

【问题讨论】:

  • $this-&gt;db-&gt;where_in('Topping', $toppings);

标签: php mysql arrays codeigniter model-view-controller


【解决方案1】:

控制器:-

$toppings = $this->input->post('topping');    //Array         
$toppinglist = $this->toppingmodel->find_topping($toppings);

型号:-

function find_topping($idArr = array()){         //Array  
 $query = $this->db->where_in("Topping", $idArr)->get("tablename");
     return $query->result_array();
}

注意:- $idArr = array() 表示

使函数具有数组的默认值,否则如果传递了其他内容,您将在查询中收到错误。

【讨论】:

  • 仍然抛出错误。 Call to undefined method CI_DB_mysqli_driver::result_array().
  • ids 在一列中以逗号分隔??
  • ids 在一个数组中。数组结构显示在问题的顶部
  • 现在试试我更新的答案,让我知道会发生什么??
  • 非常感谢。我现在正在获取数据数组
【解决方案2】:

您需要使用 WHERE IN() 进行 SQL 查询。

在 Codeignitor 中,您可以使用 $this->db->where_in($tableName, $arrayOfVales)。了解更多here

代码示例

function find_topping(array $ids)
{
    $query = $this->db->where_in('Topping', $ids);
    return $query->result_array(); 
}

【讨论】:

  • 我应该如何从控制器传递 id。我尝试使用db-&gt;where_in,但现在抛出一个类型错误说Message: Argument 1 passed to toppingmodel::find_topping() must be of the type array, string given,
  • @Dilki Sasikala 你在id 或“数组”$toppings = $this-&gt;input-&gt;get('topping'); 中得到了什么
  • 你需要向函数find_topping()发送一个id数组;
猜你喜欢
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
相关资源
最近更新 更多