从MySQL获取一个随机行并用PHP显示它
我正在尝试从我的表中选择行引号和作者,并回显它 我的目标是创建一个随机引用生成器,并显示实际引用和作者 我在我的表中输入了25个引号,其中有3行ID、quote、author 我的代码如下,并且我一直得到资源id 9错误从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
<?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");