如何在 PHP Codeigniter 中处理 SQL 查询数据
Posted
技术标签:
【中文标题】如何在 PHP Codeigniter 中处理 SQL 查询数据【英文标题】:How to Process SQL Query data in Php Codeigniter 【发布时间】:2019-01-16 05:41:35 【问题描述】:注意:这是一个特定的问题,需要回答。
这是我要从中获取数据的数据库表。
我的数据库查询
select std.reg_id, std.name as student_name, r.marks as obtain_marks, q.ques_marks as total_marks, cat.name as category_name, q.cat_id, course.name as course_name
FROM tbl_result as r JOIN tbl_question as q on q.id = r.ques_id
JOIN tbl_category as cat on cat.id = q.cat_id
JOIN tbl_batch_assigned_courses as assign on assign.id = r.course_offered_id
JOIN tbl_courses as course on course.id = assign.course_id
JOIN tbl_student as std on std.id = r.student_id
WHERE r.student_id = 168 AND r.course_offered_id = 46
你看到了吗?有很多类别,每个类别都有获得和总分。
现在我想要的是从该表中获取数据(已经做过),并将其显示在视图上(已经做过)。
但除此之外,我还想展示每个类别的总分和总分,以及两者的总和。
例如:
沟通技巧总分15分 总分25分。
(总获得数 / 总问号)* 100 ~= 类别 1 的 [某个值]。
但我想要所有类别的上述表达式(可以是任何数字)。
php 应该自动完成,只需传递学生和课程 ID。
我的控制器代码:
public function show_single_student_report()
$go = $this->input->post("submit_go");
if(isset($go))
$program_id = $this->input->post('program_id');
$batch_id = $this->input->post('batch_id');
$course_id = $this->input->post('course_id');
$student_id = $this->input->post('student_id');
$data['results'] = $this->csv_model->get_single_student_result($student_id, $course_id);
$this->load->view('show_single_student_report', $data);
else
redirect("main/check_result");
查看代码为:
$this->load->view('show_single_student_report', $data);
这个
<?php foreach ($results as $std): ?>
<div class="row">
<?php $obtain += $std->obtain_marks; ?>
Name : <?= $std->student_name;?> <br>
obtain marks: <?= $std->obtain_marks; ?> <br>
total_marks: <?= $std->total_marks;?> <br>
category: <?= $std->category_name; ?><br>
course: <?= $std->course_name; ?><br>
category_id: <?= $std->cat_id;?> <br>
</div>
<div style="height: 50px;"></div>
<?php endforeach;?>
基本上我不知道如何通过 PHP 迭代 mysql 查询。
【问题讨论】:
您想要更改 foreach 中的哪些内容?你想执行这个计算:(total obtain / total question marks) * 100
foreach 行吗?如果您可以呈现您想要完成的内容的示例表,那将会很有帮助
我添加了表格截图,但它正在显示,nimb.ws/3g4Tb2 表格截图链接。
每个类别。您可以检查图像中的表格。我想遍历所有类别。并得到每个类别的总得分和总分。
所以基本上你只想没有重复的类别。因此,例如,您看不到它在图像中的表示。相反,您只看到一次Tools and tech skills
,然后您会看到获得的分数 8 和总分 10?
嗯,我想是的,基本上我想要每个类别的总获得和总问号,一个接一个。检查这张表。 nimb.ws/Cw3m8A 这是一个类别。我想从 codeigniter 迭代它,这样我就可以获得所有类别的同一张表并显示总分
【参考方案1】:
您想修改查询以按类别聚合标记。
尝试运行:
SELECT
q.cat_id,
SUM(r.marks) AS obtain_marks,
SUM(q.ques_marks) AS total_marks,
FROM tbl_result as r
JOIN tbl_question as q on q.id = r.ques_id
GROUP BY q.cat_id
这应该让您了解 SUM() 和 GROUP BY 如何协同工作。 然后,只需将其与您的其他数据连接起来:
SELECT
std.reg_id,
std.name as student_name
FROM tbl_student as std
JOIN
(
SELECT
q.cat_id,
r.student_id,
SUM(r.marks) AS obtain_marks,
SUM(q.ques_marks) AS total_marks,
FROM tbl_result as r
JOIN tbl_question as q on q.id = r.ques_id
WHERE r.student_id = std.id
GROUP BY q.cat_id
) tbl1
ON tbl1.student_id = std.id
【讨论】:
以上是关于如何在 PHP Codeigniter 中处理 SQL 查询数据的主要内容,如果未能解决你的问题,请参考以下文章
CodeIgniter PHP - 如何在使用“select *”时选择在连接中选择哪个 ID
删除 index.php 并处理两个 Codeigniter 站点的子域,当一个在另一个站点中时
CodeIgniter / PHP:如何在 .php 视图页面中获取 URI
如何删除codeigniter路径中的“index.php”