2

我确定这并不难,但我似乎无法自己弄清楚。

我有一个带有名称列表的 mysql 数据库,我使用以下内容将名称组合成一个逗号分隔的列表。

$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

然后再次执行时,它会像 name 4, name1, name2, name5 等等......

4

3 回答 3

7

您可以为此使用 mysql:

SELECT * FROM `leaddist` ORDER BY RAND()

请注意,如果表非常大,这可能对性能至关重要,但应该非常适合中小型表

于 2013-06-04T15:03:08.027 回答
1

您可以尝试检索已经随机化的 SQL:

SELECT email
FROM leaddist
ORDER BY RAND()

注意:如果您只需要电子邮件列,则应在查询中指定它。尽量避免在选择中使用 *。

于 2013-06-04T15:04:06.770 回答
1

You're going about it wrong. You're building a string. You should be building an array, then use the built-in PHP shuffle function:

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

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