gpt4 book ai didi

php - 带有双项的Mysql查询和foreach查询

转载 作者:行者123 更新时间:2023-11-29 05:36:35 25 4
gpt4 key购买 nike

我只是从几个表中获取用户数据,但用户可以选择添加不止一项技能或经验。

$query_str = "SELECT a.*, b.*, c.*, d.*, e.* FROM edu a
JOIN exp b ON a.user_id=b.user_id
JOIN user_profiles c ON a.user_id=c.user_id
JOIN skills d ON a.user_id=d.user_id
JOIN comp e ON a.user_id=e.user_id
WHERE a.user_id = ?";

$query = $this->db->query($query_str, $end_user);
if($query->num_rows() > 0) {
foreach($query->result_array() as $stuff) {
$data[] = $stuff;
}
return $data;
} else {
return false;
}

在我尝试显示数据之前,一切都很好。如果用户有两个 exp,则其他所有内容都会出现两次。我不确定如何写这个。将它们分开会更容易吗?每个项目一个查询?

public function get_education()
{
$one_edu = $this->test_model->one_edu($end_user);
if ($one_edu != false)
{
foreach($one_edu as $edas) {
$one_edu_html .='<p>'.$edas['objective'].'</p>';
}

foreach($one_edu as $exp) {
$one_edu_html .= '<p>'.$exp['exp_title'].'</p>';

}

foreach($one_edu as $educ) {
$one_edu_html .= '<p>'.$educ['edu_title'].'</p>';
}

$result = array('status' => 'ok', 'content' => $one_edu_html);
echo json_encode($result);
exit();
}else{
$result = array('status' => 'ok', 'content' => '');
echo json_encode($result);
exit();
}
}

现在它返回这样的东西:

Objective
Exp title1
Exp title2
Edu title
Edu title <- Extra

使用代码点火器

最佳答案

这主要是因为您没有对行进行分组。在末尾添加一个石斑鱼,比如 GROUP BY a.id


更新

行是重复的,因为它们不同,您可以使用 GROUP_CONCAT

将字段分组到单个行上
SELECT a.user_id, a.education, GROUP_CONCAT(a.edu_title SEPARATOR ",") "Edu_Title", GROUP_CONCAT(b.exp_title SEPARATOR ",") "Experience Title" ,b.experience, c.objective, d.skill, e.comp FROM edu a
JOIN exp b ON a.user_id=b.user_id
JOIN user_profiles c ON a.user_id=c.user_id
JOIN skills d ON a.user_id=d.user_id
JOIN comp e ON a.user_id=e.user_id
WHERE a.user_id = 243;

Demo

关于php - 带有双项的Mysql查询和foreach查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10057416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com