我有一个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;
我对数组不太热,但如果有人能让我开始,那就太棒了,谢谢。
答案 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的意见,因为他的代码适合我,除了它只调用了几个条目......