0

我在数据库中有下表:

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?

4

1 回答 1

0

要添加到评论中,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);
于 2013-11-09T17:40:34.633 回答