我在数据库中有下表:
id | letter
---|--------
1 | A, B, C
2 | D, E, F
3 | A, C, E
4 | B, D, F
5 | G, I
6 | H
PHP代码:
<?php
require_once './conn.php';
$sql = "SELECT DISTINCT letter FROM letters ORDER BY letter ASC";
$res = mysql_query($sql);
if (mysql_num_rows($res) === 0 || mysql_num_rows($res) === NULL) {
echo '0 result(s)';
} else {
// while ($row = mysql_fetch_assoc($res)) {
while ($row = mysql_fetch_assoc($res)) {
echo $row['letter'] . ' / ';
}
}
?>
好的,我会尝试解释:如果我运行上面的代码,它会返回我A,B,C/D,E,F/A,C,E/B,D,F/G,I/H。每组字母都是一个数组,哇,我发现了火。现在的问题:如何将所有结果放入单个数组和列表中,以便结果为 A、B、C、D、E、F、G、H、I?
要添加到注释中,强烈建议不要使用 mysql
扩展。它不支持预准备语句,您将在没有它们的情况下在代码中写入 SQL 注入孔。我知道有可能不这样做。然而,大多数人都陷入其中。默认安全总是更好。
现在,你的愿望,不管它是否是一个好主意:
$letters = array();
while ($row = mysql_fetch_assoc($res)) {
$letters = array_merge($letters, preg_split('/'s*,'s*/', trim($row['letter'])));
}
$letters = array_unique($letters);
sort($letters);