Php 通过数组codeigniter从数据库获取结果

Php 通过数组codeigniter从数据库获取结果,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,我有一张食物表,我在其中存储分类ID,如下图所示 我在模型中创建了一个方法,该方法将数组(category id)作为参数,并从参数中获取ID与数组匹配的食物项 我提出了以下问题 if(count($categoryIds) > 0 && count($allergyIds) == 0 ){ $tempArr = array(); foreach($categoryIds as $eachCategoryId){ $sql = "

我有一张食物表,我在其中存储分类ID,如下图所示

我在模型中创建了一个方法,该方法将数组(category id)作为参数,并从参数中获取ID与数组匹配的食物项

我提出了以下问题

if(count($categoryIds) > 0 && count($allergyIds) == 0 ){
    $tempArr = array();
    foreach($categoryIds as $eachCategoryId){
        $sql = "Select food.food_id,food_name,food_image,food_thumbnail,description,food_variations.price as price,is_active
        from food
        join food_variations on food_variations.food_id = food.food_id
        where FIND_IN_SET($eachCategoryId,category_id)
        and food.restaurant_id = $restaurantId
        and food.is_active = 1
        and food.is_deleted = 0
        and food.food_status = 3
        and food_variations.food_variation_id = food.default_food_variation_id";
        $result = $this->db->query($sql)->result_array();
        array_push($tempArr, $result);
    }
    echo "<pre>";print_r($tempArr);
}
我得到了重复的结果,我认为这也可能导致性能问题

下面是一个问题,当时我每种食物只有一个类别,这给了我想要的结果

$list = {ids column}
$list = array_map("intval", explode(",", str_replace(',' , '', $list)));

请提供帮助。

对于mysql,建议使用字符串列来保存静态数据,而不是只添加ID。您将不得不使用相关值存储对象,而不仅仅是整数。如果您希望它是关系数据,最好使用中间表


就像你需要一个额外的表
category\U products
表来存储
category\U id
product\U id
,因为你有
多对多关系(一个产品有多个类别,一个类别有多个产品)

首先你需要在数组中插入你的列表

foreach($list as $value) {
$sql = "SELECT * FROM menu WHERE user_id = '$user_id' AND id = '$value' AND deleted = '0' AND active = '1';";
$result = mysqli_query($dBconnection, $sql);
$check = mysqli_num_rows($result);
if ($check>0) {

while($row = mysqli_fetch_assoc($result)) {
cho $row['id'];
}

} else {
echo 'empty list';
}
}
现在,您的列表保存在数组$list中

现在你可以叫它了


对于mysql,建议使用字符串列来保存静态数据,而不是只添加ID。您将不得不使用相关值存储对象,而不仅仅是整数。如果您想要的是关系数据,最好使用中间表。我已经更新了我的问题。请现在调查一下。
$list = {ids column}
$list = array_map("intval", explode(",", str_replace(',' , '', $list)));
foreach($list as $value) {
$sql = "SELECT * FROM menu WHERE user_id = '$user_id' AND id = '$value' AND deleted = '0' AND active = '1';";
$result = mysqli_query($dBconnection, $sql);
$check = mysqli_num_rows($result);
if ($check>0) {

while($row = mysqli_fetch_assoc($result)) {
cho $row['id'];
}

} else {
echo 'empty list';
}
}