如何从查询结果中只选择一行?像第4排

时间:2014-11-04 14:50:52

标签: php mysql

我有这个代码,我希望在我的网站上创建一个“引号区域”。我希望它每次都从我的数据库中选择3个随机引号。我知道函数rand(min,max),但是如何使用它从查询中选择确切的行?

require 'DB.php';
$link = mysql_connect('localhost', 'root', '430123');
$db = mysql_select_db('bakery', $link);
$result = mysql_query('SELECT * FROM quotes');

我可以使用for循环并使用mysql_fetch_row()来表示rand()中的数字是多少,但这可能有点效率不高?

4 个答案:

答案 0 :(得分:4)

要仅获取第4行,请使用limit offset, number_of_records

SELECT * FROM quotes
order by rand()
limit 3, 1

答案 1 :(得分:0)

好吧,您可以选择所有引号然后使用函数array_rand()来选择随机引号

答案 2 :(得分:0)

您可以使用ORDER BY rand()。

例如。

$result = mysql_query('SELECT * FROM quotes ORDER BY rand() limit 3');

答案 3 :(得分:0)

这是一个函数,它返回给定源数组的$ count元素数组。您必须添加对避免重复引号的支持,但这符合您的要求。

<?php
    require 'DB.php';    
    $link = mysql_connect('localhost', 'root', '430123');
    $db = mysql_select_db('bakery', $link);
    $result = mysql_query('SELECT * FROM quotes');
    $row = mysql_fetch_array($result);
    get_quotes($row,3);

   function get_quotes($source,$count) {
        $quotes = array();
        for ($i = 0;$i<$count;$i++) {
            $seed = rand(0,sizeof($source)-1);
            $quotes[] = $source[$seed];
        }
        return $quotes;        
    }

也许在查询中这样做会更好,但我不认为这就是你要求的。