2

我有一个表中有 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;

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

4

7 回答 7

5

所有告诉您在 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];

?>
于 2012-10-05T16:18:15.057 回答
2

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

于 2012-10-05T16:16:36.610 回答
2

有几种方法可以从 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 " );
于 2012-10-05T16:19:42.713 回答
1
SELECT * FROM `Users` ORDER BY RAND() LIMIT 0,1;
于 2012-10-05T16:14:01.917 回答
1

用于ORDER BY RAND()随机记录选择。

于 2012-10-05T16:15:42.337 回答
1

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

用户:id | 名字 | 姓

句子:id | 用户名 | 句子

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

于 2012-10-05T16:17:27.483 回答
1

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

这里:使用 PHP 和 MySQL 的随机句子

于 2013-07-10T02:43:45.447 回答