php - 从 mysql 查询中打印随机行

标签 php mysql optimization

我一直在寻找一种创建协作翻译小部件的方法。所以我有一个 mysql 数据库和表(称为翻译),以及一个允许用户一次翻译一页的小脚本。

但我不太相信我的剧本。我认为它不够有效。首先,mysql 获取所有“en”列为空的行,然后一段时间后屏幕显示其中的一个。还有其他方法吗?这是代码:

//Retrieve all the data from the "translations" table
$result = mysql_query("SELECT * FROM translations WHERE en IS NULL OR en=''") or die(mysql_error());

$Randnum=rand(0,mysql_num_rows($result)-1); //Gets a random number between 0 and the maximum number of rows
$i=0;   //Start to 0
while($Col = mysql_fetch_array($result))  //While there are rows to evaluate
    {
    if ($i==$Randnum)
        {
        echo "\"".$Col['es']."\"<br><br>Translate it to English: <br>";
        }
    $i++;
    }

我一直在寻找类似“echo $Col[$Randnum]['es']”或“echo $Col.$Randnum['es']”的东西,而不是使用整个 while 循环来打印一个单个随机行。我该如何实现? 如果这只是一个优化问题。如果您可以提供一个脚本或想法,将一行随机数和空的“en”col 分配给 $Col,那就更好了! (我认为这最后一点是不可能的)。 “en”行是文本,所以我不知道如何实现 other methods我看到他们在 ORDER BY 中使用数字。

最佳答案

您可以在查询中使用 ORDER BY RAND() LIMIT 1 从数据库中获取单个随机行。

关于php - 从 mysql 查询中打印随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9967348/

相关文章:

Java优化算法

python - 快速将 id 分配给给定的位组合

php - 在php函数中计算第13天的错误分钟

php - PHP 中的多线程

php - 从 Laravel DBBuilder 获取选定的列和表名

php - 如何在 laravel 的 cookie 上设置安全标志

mysql - 在 PHP 中设置默认 MySQL 套接字,pdo_mysql.default_socket PHP 5.3

mysql - 我需要一些关于数据库设计的想法,与存储坐标相关

mysql - 任何人都有索引覆盖的经验

python - 如何解读字符串反转的三种python实现的性能