php - 从 MySQL 中获取随机行并用 PHP 显示它

标签 php mysql sql

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

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

我在我的表格中输入了 25 个引号,共 3 行(ID、引号、作者)

我的代码如下,我一直收到资源 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";
?>

请帮忙

最佳答案

首先,我觉得你想要

<?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";
?>

但我还有一个建议

预加载所有报价 ID

CREATE TABLE quoteID
(
    ndx int not null auto_increment,
    id int not null,
    PRIMARY KEY (ndx)
);
INSERT INTO quoteID (id) SELECT id FROM inspirational_quotes;

现在根据 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 的返回值来自 quoteID 表中没有间隙的 ID 列表。

<?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";
?>

试一试!!!

关于php - 从 MySQL 中获取随机行并用 PHP 显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614453/

相关文章:

mysql - 如何按id范围自动递增?

SQL Server存储过程,创建函数

PHP5数据库密码能被盗吗?

php - 在 Woocommerce 中检查产品类别的购物车项目

php - 仅对于某些日期范围选择查询太慢

mysql - 如何从数据库计算模式

mysql - 在 SQL 中的一个字段中添加多个数据

javascript - 从 $get 方法切换到 $POST

mysql - 从多个表中选择并左连接到一个表

php - codeigniter fatal error 使用 $this 不在对象上下文中