从MySQL获取一个随机行并用PHP显示它

从MySQL获取一个随机行并用PHP显示它,php,mysql,sql,Php,Mysql,Sql,我正在尝试从我的表中选择行引号和作者,并回显它 我的目标是创建一个随机引用生成器,并显示实际引用和作者 我在我的表中输入了25个引号,其中有3行ID、quote、author 我的代码如下,并且我一直得到资源id 9错误 <?php mysql_select_db(name of database); $quotes = "SELECT author AND quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1"; $resu

我正在尝试从我的表中选择行引号和作者,并回显它

我的目标是创建一个随机引用生成器,并显示实际引用和作者

我在我的表中输入了25个引号,其中有3行ID、quote、author

我的代码如下,并且我一直得到资源id 9错误

<?php

mysql_select_db(name of database);

$quotes = "SELECT author AND quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1";

$result = mysql_query($quotes);

WHILE ($row = mysql_fetch_array($result)):
ENDWHILE; 

echo "$result";
?>

请帮助

您不能将$result作为字符串回显


您没有响应正确的变量

echo $row['author'] . ": " . $row['quote'];

首先,我想你想要

<?php

mysql_select_db(name of database);
$quotes = "SELECT author,quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1";
$result = mysql_query($quotes);

WHILE ($row = mysql_fetch_array($result)):
ENDWHILE; 

echo "$result";
?>
现在根据quoteID表中的id进行选择

SELECT B.author,B.quote FROM quoteID A INNER JOIN inspirational_quotes B
USING (id) WHERE A.ndx = (SELECT CEILING(MAX(ndx) * RAND()) FROM quoteID);
这应该可以很好地扩展,因为@rnd_id的返回值来自一个id列表,在quoteID表中没有间隙

<?php

mysql_select_db(name of database);
$quotes = "SELECT B.author,B.quote FROM quoteID A INNER JOIN "
. "inspirational_quotes B USING (id) "
. "WHERE A.ndx = (SELECT CEILING(MAX(ndx) * RAND()) FROM quoteID)";

$result = mysql_query($quotes);

$row = mysql_fetch_array($result);

echo "$result";
?>
试试看

为什么,用逗号

SELECT author, quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1

我建议您通过PHP将结果随机化以提高性能。例如:

$r = mysql_query("SELECT count(*) FROM inspirational_quotes");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1); 
$r = mysql_query("SELECT author,quote FROM inspirational_quotes LIMIT $rand, 1");

选择作者,引用而不是作者和引用怎么样?两件事。兰德公司的1张订单确实不能很好地扩展,只有几百张记录是可以的,但只有几千张记录时,你会开始感到痛苦。几百万的时候,你就完了。请参阅《SQL反模式》一书以了解替代方案。2 PHP中的mysql_*函数除了名称外,其他所有函数都不推荐使用。你应该切换到更现代的东西,比如PDO或MysqliDoes。当天每个访问者都会出现相同的随机引用?不,不会,每个新页面加载都会出现,应该可以,因为我只有25个引用!感谢您的帮助我改进了查询和ID收集。
SELECT author, quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1
$r = mysql_query("SELECT count(*) FROM inspirational_quotes");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1); 
$r = mysql_query("SELECT author,quote FROM inspirational_quotes LIMIT $rand, 1");