Php 通过数组codeigniter从数据库获取结果
我有一张食物表,我在其中存储分类ID,如下图所示 我在模型中创建了一个方法,该方法将数组(category id)作为参数,并从参数中获取ID与数组匹配的食物项 我提出了以下问题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 = "
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';
}
}