[英]Codeigniter: Display multiple columns from database as one
我想显示我的数据库中的多个列值。
使用来自模型的查询
$this->db->select('*');
$this->db->from('projectskillslist ps');
$this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left');
$this->db->join('projects p', 'p.projectID = ps.projectID', 'left');
$this->db->where('ps.projectID = 1');
$query = $this->db->get();
$result = $query->result_array();
if ($query->num_rows() > 0) {
return $result;
}
return false;
在我的控制器中
$data['pSkills'] = $this->emp_model->view_projskills();
查询按预期完美返回:
现在在我看来,
我想打电话
Title: Project 1
SkillName: JAVA, PHP
到目前为止,我已经这样做了:
foreach ($pSkills as $data) {
echo $data['title'];
echo $data['skillName'];
}
我得到的结果是
Title: Project 1
Skills: PHP
Title: Project 2
Skills: JAVA
这确实是一个愚蠢的问题,我已经查找并搜索了相同的问题,但我仍然没有运气。 我希望你能帮助我。 非常感谢!!
试试这个,但首先按项目 ID 和技能 ID 对结果集进行排序。
$this->db->order_by('projectID, skillID');
看法
$lastProjectID = 0;
$p_skills = '';
$p_title = '';
foreach ($pSkills as $data) {
if ($data['projectID'] !== $lastProjectID) {
// if there's a title, printIt()
if ($p_title !== '') {
printIt($p_title, $p_skills);
}
// set new title and skill list
$p_title = $data['title'];
$p_skills = $data['skillName'];
// remember last project
$lastProjectID = $data['projectID'];
} else {
// append skill name to skills
$p_skills .= ", " . $data['skillName'];
}
}
// end of foreach, if there's a title, printIt()
if ($p_title !== '') {
printIt($p_title, $p_skills);
}
function printIt($title, $skills) {
echo "Title: $title<br>";
echo "SkillName: $skills<br>";
}
如果有帮助,请按照以下步骤操作。
第 1 步:您必须连接 projectID GROUP_CONCAT 会有所帮助。
步骤 2. 执行您的 SQL 查询,如下所示
SELECT projectID, skillName, GROUP_CONCAT(projectID) AS projid FROM projectskillslist GROUP BY projid
第 3 步:要在视图中显示它,您可以使用 PHP 的 expand() 并对其进行迭代,如果有帮助的话,就像这样..
foreach ($pSkills as $row) {
echo $row->title;
echo explode(',', $row->skillName);
/*
or add below line of code if it doesn't works
*/
//echo str_replace(',', '<br />', $row->skillName);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.