1

我有一个带有以下描述的结果表。我需要一种方法来遍历表格并获取某个 admNo 的子代码和等级,并将它们作为一个字符串放在一起,以便通过 SMS 发送。消息内容应如下所示:

2129 CAT1 101 A- 102 C+ 121 A 231 C+. 

结果表的内容...

id  admNo   examtyp subCode  termId formId  streamId score  grade   points  year
1   2129    CAT1    101      1  3   0   87  A-  11  2013
1   2129    CAT1    102      1  3   0   65  C+  7   2013
1   2129    CAT1    121      1  3   0   90  A   12  2013
1   2129    CAT1    231      1  3   0   67  C+  7   2013
1   2129    CAT1    233      1  3   0   66  C+  7   2013
1   2129    CAT1    311      1  3   0   65  C+  7   2013
1   2129    CAT1    313      1  3   0   90  A   12  2013
1   2129    CAT1    565      1  3   0   60  C   6   2013
2   4093    CAT1    101      1  3   0   0   C+  7   2013
2   4093    CAT1    102      1  3   0   70  B-  8   2013

上表存储了学生的科目成绩。如果有一种方法可以在获取后循环遍历数组,那么这也可以。

4

2 回答 2

1

admNo如果您希望消息内容看起来像您的示例,您可以在/一行中执行此操作examtyp

select concat(admNo, ' ', examtyp, ' ', 
              group_concat(concat(subcode, ' ', grade) separator ' '),
              '.'
             ) MessageLine
from Results r
group by admNo, examtyp
于 2013-05-15T15:49:19.787 回答
0

这个 PHP 代码做你想做的事:

$admNo = 4093;

$DB_NAME = "*dbname*";
$DB_HOST = "*hostname*";
$DB_USER = "*dbusername*";
$DB_PASS = "*dbpassword*";
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$query = "SELECT * FROM results WHERE admNo=$admNo";
$result = $mysqli->query($query) or die($mysqli->error);
$total = $mysqli->affected_rows;
$linea = $result->fetch_assoc();
$string = $linea['admNo'].' '.$linea['examtyp'].' '.$linea['subCode'].' '.$linea['grade'].' ';
for($i = 0; $i < $total-1; $i++){
    $linea = $result->fetch_assoc();
    $string .= $linea['subCode'].' '.$linea['grade']. ' ';
}
print $string;

输出:

4093 CAT1 101 C+102 B-

此 PHP 代码将使用输出中显示的格式填充 $string 输出,并根据表中 admNo 的所有条目创建它。然后,您可以根据需要使用该字符串执行 SQL 插入以将其放入 sms 表中

这是你需要的吗?

于 2013-05-15T15:37:26.653 回答