0

DBに次のテーブルがあります。

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 が返されます。文字の集まりは配列です、うわー、私は火を発見しました。ここで問題: すべての結果を 1 つの配列とリストに入れ、結果が 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 に答える