2

これはそれほど難しいことではないと確信していますが、自分でそれを理解することはできないようです。

名前のリストを含むmysql dbがあり、次を使用して名前をコンマ区切りのリストに組み立てています。

$emailresult = mysql_query("SELECT * from leaddist")
        or die(mysql_error());
        while($row = mysql_fetch_array($emailresult)){
        $repemail .= $row['email'] . ", ";
        }
        echo $repemail;

これは次のようなものを出力します: name1, name2, name3, name4, name5

私の質問は、それをシャッフルするいくつかの方法は何ですか:name3、name1、name4、name5、name2

その後、再度実行すると、名前 4、名前 1、名前 2、名前 5 などになります。

4

3 に答える 3

7

これには mysql を使用できます。

SELECT * FROM `leaddist` ORDER BY RAND()

テーブルが非常に大きい場合、これはパフォーマンスが重要になる可能性がありますが、小規模から中規模のテーブルに適していることに注意してください。

于 2013-06-04T15:03:08.027 に答える
1

あなたはそれについて間違っています。あなたは文字列を構築しています。配列を作成してから、組み込みの PHPシャッフル関数を使用する必要があります。

$emails = array();
while($row = mysql_fetch_array($emailresult)){
    $emails[] = $row['email'];
}
shuffle($emails);

$repemail = implode(',', $emails);
于 2013-06-04T15:36:45.163 に答える
1

すでにランダム化されている SQL を取得しようとすることができます。

SELECT email
FROM leaddist
ORDER BY RAND()

注:メール列のみが必要な場合は、クエリで指定する必要があります。選択で * を使用しないようにしてください。

于 2013-06-04T15:04:06.770 に答える