【问题标题】:php random mysql dataphp随机mysql数据
【发布时间】:2012-10-05 16:10:02
【问题描述】:

我有一个表中有 6 列的 MySQL 数据库。最终会有大约 100 行,现在我有 3 行。

列标题:FirstName、SecondName、Sentence1、Sentence2、Sentence3、Sentence4

所有表都设置为 VARCHAR

我想在网页上使用 php 从每一行中调用随机数据,例如将 row1 FirstName 与 row3 SecondName 和 row2 Sentence1 等混合匹配。

我读到使用 php 随机化更快,但尽管搜索,我真的无法掌握如何做到这一点。

我可以连接到我的 MySQL 数据库并使用以下代码获取返回的结果:

    <?php
    // Connect to database server
    mysql_connect("localhost", "xxx", "yyy") or die (mysql_error ());
    // Select database
    mysql_select_db("zzz") or die(mysql_error());
    // SQL query
    $strSQL = "SELECT * FROM Users";
    // Execute the query (the recordset $rs contains the result)
    $rs = mysql_query($strSQL);
    // Loop the recordset $rs
    // Each row will be made into an array ($row) using mysql_fetch_array
    while($row = mysql_fetch_array($rs)) {
    // Write the value of the column FirstName (which is now in the array $row)
    echo $row['FirstName'] . "<br />";
      }
    // Close the database connection
    mysql_close();
    ?>

但这只是返回一列数据。我需要使用以下方式在网页中返回随机代码:

echo $firstname . $lastname . $sentence1 . $sentence2 . $sentence3 . $sentence4;

注意,这之后也会重复 3 或 4 行

echo $firstname_2 . $lastname_2 . $sentence1_2 . $sentence2_2 . $sentence3_2 . $sentence4_2;

我对阵列不太感兴趣,但如果有人能让我开始,那就太好了,谢谢。

【问题讨论】:

    标签: php mysql random


    【解决方案1】:

    所有告诉你在 SQL 查询中使用 rand 的人都没有读过这个问题。对这些人来说:提问者想要的是行中数据的随机组合,而不是随机行。

    类似的东西。它将从数据库中获取所有结果并回显一个完全随机的组合。我无法避免使用数组,因为它们非常有用。

    <?php
    // Connect to database server
    mysql_connect("localhost", "xxx", "yyy") or die (mysql_error ());
    // Select database
    mysql_select_db("zzz") or die(mysql_error());
    // SQL query
    $strSQL = "SELECT * FROM Users";
    // Execute the query (the recordset $rs contains the result)
    $rs = mysql_query($strSQL);
    // Array to hold all data
    $rows = array();
    // Loop the recordset $rs
    // Each row will be made into an array ($row) using mysql_fetch_array
    while($row = mysql_fetch_array($rs)) {
    // add row to array.
    $rows[] = $row;
      }
    // Close the database connection
    mysql_close();
    
    // Max rand number
    $max = count($rows) - 1;
    
    // print out random combination of data.
    echo $rows[rand(0, $max)][0] . " " . $rows[rand(0, $max)][1] . " " . $rows[rand(0, $max)][2] . " " . $rows[rand(0, $max)][3] . " " . $rows[rand(0, $max)][4] . " " . $rows[rand(0, $max)][5];
    
    ?>
    

    【讨论】:

    • +1 实际阅读问题! (并让我提前 3 分钟到达帖子)
    • 这很好,马修,它运作良好,谢谢。我现在唯一需要知道的是,是否可以稍后在网页php中调用它而无需再次连接到数据库?
    • 可以。所有数据都存储在 $rows 变量中。
    • 另外,@Sara44,如果您通过单击所需帖子左上角的绿色勾号接受答案,人们将更有可能回答您以后可能遇到的任何问题。
    • 对不起,马修,我以为我已经这样做了。再次感谢您的帮助。
    【解决方案2】:

    将所有要随机显示的值存储在一个变量中,使用 rand() http://php.net/manual/en/function.rand.php 和 shuffle() http://php.net/manual/en/function.shuffle.php 生成随机数据并显示它们

    【讨论】:

      【解决方案3】:

      有几种方法可以在php中从db中获取随机数据

      SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;
      

      另一种方法:-

      $range_result = mysql_query( " SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM    `table` ");
      $range_row = mysql_fetch_object( $range_result ); 
      $random = mt_rand( $range_row->min_id , $range_row->max_id );
      $result = mysql_query( " SELECT * FROM `table` WHERE `id` >= $random LIMIT 0,1 ");
      

      另一种方法:-

      $offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");
      $offset_row = mysql_fetch_object( $offset_result ); 
      $offset = $offset_row->offset;
      $result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );
      

      【讨论】:

        【解决方案4】:
        SELECT * FROM `Users` ORDER BY RAND() LIMIT 0,1;
        

        【讨论】:

        • 这不是被问到的。他们想要行中数据字段的随机组合,而不仅仅是随机行。
        【解决方案5】:

        使用ORDER BY RAND() 进行随机记录选择。

        【讨论】:

          【解决方案6】:

          把它分成两个表, 一个给用户

          用户: 编号 |名字||姓氏

          句子: 编号 |用户名 |句子

          在“id / userId”处加入并执行 ORDER BY RAND() 可能后跟 LIMIT 20

          【讨论】:

            【解决方案7】:

            尝试实现这一点,但从每一列(目前为 14 个)中获取一个条目,而不是一个小的随机数。很想听听 Matthew McGovern 的意见,因为他的代码适合我,只是它只调用了几个条目......

            这里:Random Sentence Using PHP & MySQL

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-11-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多