我有一个结果表,其中包含以下描述。我需要一种循环遍历表并获得某个admNo的subCode和等级的方法,并将它们组合成一个字符串,以便通过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
上表列出了学生的科目分数。如果有一种方法可以在获取之后遍历数组,那么这也可以。
答案 0 :(得分:1)
如果您希望邮件内容看起来像您的示例,则每admNo
/ examtyp
行可以执行一行:
select concat(admNo, ' ', examtyp, ' ',
group_concat(concat(subcode, ' ', grade) separator ' '),
'.'
) MessageLine
from Results r
group by admNo, examtyp
答案 1 :(得分: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表中
这是你需要的吗?