Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从记录中读取随机行_Php_Mysql_Database_Random - Fatal编程技术网

Php 从记录中读取随机行

Php 从记录中读取随机行,php,mysql,database,random,Php,Mysql,Database,Random,我将保持简单易懂: 1) 我有一个包含两列的数据库——word和text 2) 每个单词有大约600000行与之相关的文本 3) 我是一个使用php和mysql的.net用户,所以我有一点知识 我的要求: 1) 我将通过表格传递这个词 2) 表单将连接到数据库,并应显示600000行中的2000行随机行,这些行不应重复 我目前的进展: <?php $con = mysql_connect("localhost","text_minx","pwd"); if (!$con) { di

我将保持简单易懂:

1) 我有一个包含两列的数据库——word和text

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

3) 我是一个使用php和mysql的.net用户,所以我有一点知识

我的要求:

1) 我将通过表格传递这个词

2) 表单将连接到数据库,并应显示600000行中的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 />";
}
?>
类似这样的东西:

$result = mysql_query("SELECT DISTINCT * FROM Data WHERE word='health' ORDER BY RAND() LIMIT 2000");
通过MySQL而不是PHP选择2000个随机行更有效,如上所述


还要注意,
selectdistinct
将只选择唯一的行,您可能无论如何都应该删除这些行。如果指定列名而不是使用
*
,则可以选择要唯一的列—尽管这在某种程度上也取决于表的构建方式。

我认为这是您想要的方式

从数据中选择* 其中word='health'按兰德排序()限制02000


这将为您提供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);

不过,这并不考虑不重复。如果我正确理解您的需要,您可以在将函数传递给shuffle()之前使用
array\u unique()
函数。

您好,我不想要2000条记录。我想要一条记录中的2000行:)。所以我得到了所有数据,并希望使用PHP从中获得2000行。