从MySQL-PHP记录中读取随机行


read random lines from a record MySQL-PHP

我将保持简单易懂:

1)我有一个数据库2列-字和文本

2)每个单词有大约。60万行与之相关的文本

3)我是一个。net的人转移到php和mysql -所以一点知识。

我的要求:

1)我将通过表单

传递单词

2)表单将连接到数据库,并应该显示从这600,000行中随机抽取的2000行,这些行应该是不重复的

我当前的进度:

<?php
$con = mysql_connect("localhost","text_minx","pwd");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM Data
WHERE word='health'");
while($row = mysql_fetch_array($result))
{
  echo $row['lines'];
  echo "<br />";
}
?>

显示所有行。我想要的是在一个可能的数组中读取这个$row['lines'],并从中随机选择2000行-它们应该是不重复的。

请帮忙好吗?

像这样:

$result = mysql_query("SELECT DISTINCT * FROM Data WHERE word='health' ORDER BY RAND() LIMIT 2000");

用MySQL比用PHP更有效地选择2000个随机行,如上所述

还要注意,SELECT DISTINCT将只选择唯一的行,无论如何您可能都应该删除它。如果您指定列名而不是使用*,那么您可以选择您想要唯一的列-尽管这也取决于您的表是如何构建的。

我认为这是你想要的方式

SELECT * FROM DataWHERE word='health' ORDER BY RAND() LIMIT 0,2000

这将给你2000个记录按任意随机顺序排序

您需要将行结果拆分为数组(因为它目前是一个字符串),然后您可以随机选择2000行。

假设文本有类似的换行符作为行分隔符,它看起来像:

echo $row['lines']; //starts from this line of your code
$data = explode("'n", $row['lines']);
shuffle($data);
$random_lines = array_slice($data, 0, 2000);
但是,

不能处理非重复。如果我正确理解了你的需要,你可以在将array_unique()函数传递给shuffle()之前使用它。