php随机mysql数据

时间:2012-10-05 16:10:02

标签: php mysql random

我有一个MySQL数据库,表中有6列。最终会有大约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;

我对数组不太热,但如果有人能让我开始,那就太棒了,谢谢。

7 个答案:

答案 0 :(得分: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];

?>

答案 1 :(得分:2)

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

答案 2 :(得分: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 " );

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

将其拆分为两个表格, 一个用户

用户: id |姓名|名字

句: id | userId |句

加入“id / userId”并执行ORDER BY RAND(),然后可能会出现LIMIT 20

答案 6 :(得分:1)

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

此处:Random Sentence Using PHP & MySQL