使用php从mysql中提取名称的随机顺序

Posted

技术标签:

【中文标题】使用php从mysql中提取名称的随机顺序【英文标题】:Shuffle order of names pulled from mysql with php 【发布时间】:2013-05-31 01:07:06 【问题描述】:

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

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

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

这会输出如下内容: 姓名1,姓名2,姓名3,姓名4,姓名5

我的问题是,有哪些方法可以将其改组为: 名字3,名字1,名字4,名字5,名字2

然后当再次执行时,它会像 名字4、名字1、名字2、名字5等等……

【问题讨论】:

旁注...不要使用 php legacy mysql 连接器...改用 mysqli 或 PHP PDO 【参考方案1】:

你可以用mysql来做这个:

SELECT * FROM `leaddist` ORDER BY RAND()

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

【讨论】:

很高兴我帮助了你。是的,可以考虑 5 行 smallsized ;)【参考方案2】:

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

SELECT email
FROM leaddist
ORDER BY RAND()

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

【讨论】:

嗯,这只是一个例子,反正想法是一样的。 别担心,你甚至不需要投票。你的是最准确的,但谢谢!【参考方案3】:

你做错了。你正在构建一个字符串。您应该构建一个数组,然后使用 PHP 内置的 shuffle 函数:

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

shuffle($emails);

$repemail = implode(',', $emails);

【讨论】:

以上是关于使用php从mysql中提取名称的随机顺序的主要内容,如果未能解决你的问题,请参考以下文章

挑战:如何在随机或任意选择客户名称时列出与客户名称相关的所有信用卡

按随机和字段排序 MySQL 查询?

使用php(xampp)以随机顺序从目录中获取文件

PHP从文件夹中提取随机图像

使用多个OR的查询结果不是OR的顺序

使用 Mysql 和 PHP 在表中汇总 [重复]