2013-11-21 113 views
3

在我的表courses中,有几个条目共享相同的​​。我正在使用foreach循环来检索结果集中的值。 for循环只显示一个结果,而不显示共享​​的所有其他结果。如何显示共享相同​​的所有行?Foreach循环显示具有相同ID的所有记录

表值

+----+------------+----------------------+---------------+------------+ 
| id | academy_id |  course_name  | start_date | end_date | 
+----+------------+----------------------+---------------+------------+ 
| 1 |  123 | Biology - Basic  | 2013-11-30 | 2013-12-25 | 
| 2 |  123 | Biology - Nutrition | 2013-11-30 | 2013-12-25 | 
| 3 |  345 | Chemistry   | 2013-11-30 | 2013-12-25 | 
| 4 |  678 | Calculus    | 2013-11-30 | 2013-12-25 | 
+----+------------+----------------------+---------------+------------+ 

PHP

$academy_id = '123'; 

$db_select = $db_con->prepare(" 
SELECT c.course_name, 
     c.course_start_date, 
     c.course_end_date 
FROM courses c 
WHERE c.academy_id = 123 
"); 
if (!$db_select) return false; 
    if (!$db_select->execute(array(':academy_id' => $academy_id))) return false; 
    $results = $db_select->fetchAll(\PDO::FETCH_ASSOC); 
    if (empty($results)) return false; 
    foreach ($results as $value){ 
    $final_result = "<b>Course Name: </b>".$value['course_name']."</br><b>Start Date: </b>".$value['start_date']."</br><b>End Date: </b>".$value['end_date']."</br>"; 
    } 
print_r($_POST); 
} 

CURENT结果

+----+------------+-------------------+---------------+------------+ 
| id | academy_id | course_name  | start_date | end_date | 
+----+------------+-------------------+---------------+------------+ 
| 1 |  123 | Biology - Basic | 2013-11-30 | 2013-12-25 | 
+----+------------+-------------------+---------------+------------+ 

通缉的结果都academy_id = 123显示

+----+------------+----------------------+---------------+------------+ 
| id | academy_id |  course_name  | start_date | end_date | 
+----+------------+----------------------+---------------+------------+ 
| 1 |  123 | Biology - Basic  | 2013-11-30 | 2013-12-25 | 
| 2 |  123 | Biology - Nutrition | 2013-11-30 | 2013-12-25 | 
+----+------------+----------------------+---------------+------------+ 

回答

3

变化

$academy_id = '123'; 

.... 

foreach ($results as $value){ 
    $final_result = "<b>Course Name: </b>".$value['course_name']."</br><b>Start Date: </b>".$value['start_date']."</br><b>End Date: </b>".$value['end_date']."</br>"; 
} 

$academy_id = 123; 

..... 

$final_result = ''; 
foreach ($results as $value){ 
    $final_result .= "<b>Course Name: </b>".$value['course_name']."</br><b>Start Date: </b>".$value['start_date']."</br><b>End Date: </b>".$value['end_date']."</br>"; 
} 

echo $final_result; 
+0

它不起作用。检查[链接](http://webprolearner.ueuo.com/test/courses.php)只显示一个结果 –

+0

这并没有改变任何东西。选择回声'$ final_result'只显示一个结果'$ academy_id = 123',而不是第二个结果 –

0

(看到别人的答案,我知道我可以解决你有不同的问题或可能有) 我不确定我是否完全理解您的要求,但您可以尝试以下方法

拆分代码分为两个部分

1)部分人会做:

SELECT c.academy_id 
FROM courses c 
GROUP BY c.academy_id 

这将是你的循环

2)第二部分的前面的循环中会做初步结果您当前的SQL,而不是硬编码123,它将使用上一个查询的结果作为值

相关问题