如何使用php将mysql结果连接成一个字符串
这是一个显示特定教师时间表的代码, 1--从下拉列表中选择教师姓名,并从表“assign_teacher”中进行比较,2--存储各自教师的信息,3--获取上课时间和学生姓名并显示如何使用php将mysql结果连接成一个字符串,php,mysql,web,Php,Mysql,Web,这是一个显示特定教师时间表的代码, 1--从下拉列表中选择教师姓名,并从表“assign_teacher”中进行比较,2--存储各自教师的信息,3--获取上课时间和学生姓名并显示 $query="SELECT * FROM assign_teacher WHERE teacher ='$nam' order by session asc " ; $result=mysql_query($query); $row = mysql_affected_rows();
$query="SELECT * FROM assign_teacher WHERE teacher ='$nam' order by session asc " ;
$result=mysql_query($query);
$row = mysql_affected_rows();
if($row >=1){
while($ro= mysql_fetch_array($result))
{
?>
<tbody>
<td><?php echo $ro['session']; ?> </td>
<td><?php $days=explode(',', $ro['days']); if (in_array("Monday", $days) ) {
echo $ro['student']; ?> </td>
<?php }
else echo "----" ; ?>
<td> <?php if (in_array("Tuesday", $days)) {
echo $ro['student']; ?> </td>
<?php } else echo "-----" ; ?>
<td> <?php if (in_array("Wednesday", $days)) {
echo $ro['student']; ?> </td>
<?php } else echo "-----" ; ?>
<td> <?php if (in_array("Thursday", $days)) {
echo $ro['student']; ?> </td>
<?php } else echo "-----" ; ?>
<td> <?php if (in_array("Friday", $days)) {
echo $ro['student']; ?> </td>
<?php } else echo "-----" ; ?>
<td> <?php if (in_array("Saturday", $days)) {
echo $ro['student']; ?> </td>
<?php } else echo "-----" ; ?>
</tr>
<?php } ?>
</tbody>
<?php } ?>
$query=“选择*FROM assign_teacher,其中teacher='$nam'按会话asc排序”;
$result=mysql\u query($query);
$row=mysql_受影响的_行();
如果($row>=1){
而($ro=mysql\u fetch\u数组($result))
{
?>
输出如下表所示: 上午10:00-11:30 |约翰 上午10:00-11:30 |阿莱娜 下午02:00-03:30 |阿里 下午2:00-03:30 |史密斯
但实际上我想要这个: 上午10:00-11:30 |约翰,阿莱娜 下午2:00-03:30 |阿里,史密斯
我想让同一时间的学生的名字用逗号隔开,
有人能帮我修一下吗!使用mysql
GROUP\u CONCAT
和GROUP by
SELECT tab1.*,GROUP_CONCAT(tab1.student) as students FROM
assign_teacher AS tab1 WHERE teacher ='$nam'
group by tab1.timing order by tab1.session asc
试试这个:-
$query="SELECT tab1.*,GROUP_CONCAT(tab1.student) as students FROM
assign_teacher AS tab1 WHERE teacher ='$nam'
group by tab1.session order by tab1.session asc" ;
使用
GROUP\u CONCAT
$query="SELECT a.*,GROUP_CONCAT(a.student SEPARATOR ',') as students FROM assign_teacher AS a WHERE teacher ='$nam' group by a.timing order by a.session asc " ;
确实需要从数据库中获取一些数据,以了解事物之间的关系 但是,我假设您有一个针对每位教师的课程表,其中一列包含该课程每周几天的逗号分隔列表,另一列包含该课程的学生姓名 然后,您需要每个会话的输出,每个(工作)周的每一天都有一列,其中包含当天会话中以逗号分隔的学生列表 例如:-
SELECT session,
GROUP_CONCAT(IF(FIND_IN_SET('Monday', days), tab1.student, NULL)) as students_monday,
GROUP_CONCAT(IF(FIND_IN_SET('Tuesday', days), tab1.student, NULL)) as students_tuesday,
GROUP_CONCAT(IF(FIND_IN_SET('Wednesday', days), tab1.student, NULL)) as students_wednesday,
GROUP_CONCAT(IF(FIND_IN_SET('Thursday', days), tab1.student, NULL)) as students_thursday,
GROUP_CONCAT(IF(FIND_IN_SET('Friday', days), tab1.student, NULL)) as students_friday,
GROUP_CONCAT(IF(FIND_IN_SET('Saturday', days), tab1.student, NULL)) as students_saturday
FROM assign_teacher AS tab1
WHERE teacher ='$nam'
GROUP BY tab1.session
ORDER BY tab1.session asc
通过一些示例数据,我可以检查这是否适用于您的表
编辑
按如下方式构建测试表以上SQL的结果是我认为您想要的:-
CREATE TABLE assign_teacher
(
ID INT,
teacher VARCHAR(255),
student VARCHAR(255),
session VARCHAR(255),
days VARCHAR(255)
);
INSERT INTO assign_teacher(ID, teacher, student, session, days)
VALUES
(1, 'Azir', 'Shehzor', '10:00-10:30 am', 'Monday,Saturday'),
(2, 'Azir', 'Salar', '10:00-10:30 am', 'Monday,Saturday');
(3, 'Azir', 'Fred', '14:00-14:30 am', 'Tuesday,Wednesday'),
(4, 'Azir', 'Burt', '14:00-14:30 am', 'Tuesday,Wednesday');
(5, 'Azir', 'Sally', '14:00-14:30 am', 'Tuesday,Wednesday,Thursday,Friday'),
(6, 'Azir', 'Sid', '16:00-16:30 am', 'Monday,Tuesday,Saturday');
(7, 'Azir', 'Bilbo', '16:00-16:30 am', 'Monday,Tuesday,Saturday'),
(8, 'Azir', 'Frodo', '16:00-16:30 am', 'Monday,Tuesday,Saturday');
(9, 'Azir', 'Maggie', '16:00-10:30 am', 'Monday,Tuesday,Saturday'),
(10, 'Azir', 'Lisa', '16:00-16:30 am', 'Monday,Tuesday,Saturday');
结果
session students_monday students_tuesday students_wednesday students_thursday students_friday students_saturday
10:00-10:30 am Shehzor,Salar NULL NULL NULL NULL Shehzor,Salar
14:00-14:30 am NULL Fred,Burt,Sally Fred,Burt,Sally Sally Sally NULL
16:00-10:30 am Maggie Maggie NULL NULL NULL Maggie
16:00-16:30 am Sid,Bilbo,Frodo,Lisa Sid,Bilbo,Frodo,Lisa NULL NULL NULL Sid,Bilbo,Frodo,Lisa
编辑
将SQL放入脚本:-
<?php
$query = "SELECT session,
GROUP_CONCAT(IF(FIND_IN_SET('Monday', days), tab1.student, NULL)) as students_monday,
GROUP_CONCAT(IF(FIND_IN_SET('Tuesday', days), tab1.student, NULL)) as students_tuesday,
GROUP_CONCAT(IF(FIND_IN_SET('Wednesday', days), tab1.student, NULL)) as students_wednesday,
GROUP_CONCAT(IF(FIND_IN_SET('Thursday', days), tab1.student, NULL)) as students_thursday,
GROUP_CONCAT(IF(FIND_IN_SET('Friday', days), tab1.student, NULL)) as students_friday,
GROUP_CONCAT(IF(FIND_IN_SET('Saturday', days), tab1.student, NULL)) as students_saturday
FROM assign_teacher AS tab1
WHERE teacher ='".mysql_real_escape_string($nam)."'
GROUP BY tab1.session
ORDER BY tab1.session ASC";
$result = mysql_query($query);
while($ro = mysql_fetch_array($result))
{
?>
<tbody>
<td><?php echo $ro['session']; ?> </td>
<td>
<?php
echo "<td>".(($ro['students_monday'] == '') ? "----" : $ro['students_monday'] )."</td>";
echo "<td>".(($ro['students_tuesday'] == '') ? "----" : $ro['students_tuesday'] )."</td>";
echo "<td>".(($ro['students_wednesday'] == '') ? "----" : $ro['students_wednesday'] )."</td>";
echo "<td>".(($ro['students_thursday'] == '') ? "----" : $ro['students_thursday'] )."</td>";
echo "<td>".(($ro['students_friday'] == '') ? "----" : $ro['students_friday'] )."</td>";
echo "<td>".(($ro['students_saturday'] == '') ? "----" : $ro['students_saturday'] )."</td>";
?>
</tbody>
<?php
}
?>
你能给我一个明确的代码行吗?这样我就可以使用它了:-选择tab1.*,组CONCAT(tab1.student)作为学生,从中指定教师为tab1,其中教师=“$nam”按tab1分组。按tab1.session计时顺序asc@TehreemFatimafrom这“时机”在哪里变量来自?我将“计时”替换为“会话”,现在它工作了,但它没有组合结果它只显示了一个结果,甚至没有在新行中显示具有相同计时的第二个结果,从这里开始这个“计时”只是考虑了一个例子,在数据库中替换你的字段的时间。是的,我用“session”来改变,但是不工作,只显示一个结果,而不是第二个,在同一个时间里,我有一个表名“分配老师”,它有“老师”、“会话”、“学生”、“天”的栏。,和yes days是逗号分隔的1 Azir Shehzor 10:00-10:30 am Monday,Saturday,2 Azir Salar 10:00-10:30 am Monday,Saturday,这是我的数据库中的一些示例数据,ID,教师,学生,会话,days*分别使用测试数据/表和我认为符合您需要的查询结果进行编辑。