【问题标题】:Order By Random is creating errors随机排序正在产生错误
【发布时间】:2013-08-05 06:50:09
【问题描述】:

这是我想要使用并且我正在使用的:

$sql="SELECT * from channel ORDER BY rand() LIMIT 6 ";

$rs = $conn->
Execute($sql);

$channellist = $rs->
getrows();

但这会产生错误,整个网站都会变成空白。
在服务器错误日志中,这是错误:

[28-Jul-2013 09:53:37 America/Detroit] PHP Fatal error:  Call to a member function getrows() on a non-object in /home/hotspitt/public_html/cache/templates_c/%%C3^C37^C3724EE2%%head1.tpl.php on line 60

删除第 60 行($channellist = $rs->getrows();)使其工作。 并将其更改为:

$sql="SELECT * from channel ORDER BY ID desc LIMIT 6 ";

$rs = $conn->
Execute($sql);

$channellist = $rs->
getrows();

让它工作。所以我认为rand函数有问题。我不明白为什么 rand() 函数不起作用。
请帮我解决这个问题。

【问题讨论】:

  • $conn 是什么?查询是否直接在 SQL 中工作?
  • 我认为您在查询“SELECT * FROM channel ORDER BY rand() desc LIMIT 6”中错过了 ASC/DESC,试试这个?
  • 很确定 ASC/DESC 与此无关,因为这个小提琴可以工作 sqlfiddle.com/#!9/26e76/2 但是要知道如何声明/初始化 $conn 会很有趣
  • 我知道这两个查询都是正确的。由于 rand() 函数几天前还在工作,但是在安装 nginx 之后,这一切都发生了。现在我不能使用 rand() 函数,我必须坚持 Desc 的顺序。我不知道为什么会这样。

标签: php mysql sql random


【解决方案1】:
select * from user_details order by rand() limit 10

工作,现在问题是你的表名 或您用于执行 sql 的库

【讨论】:

  • 我认为表名和库没有错。就像这样: $sql="SELECT * from channel ORDER BY ID desc LIMIT 6 "; $rs = $conn-> 执行($sql); $channellist = $rs-> getrows();正在工作中。但是当涉及到 rand() 时。它只是空白。
  • 获取更多关于 api 用于执行 sql 语句的信息,必须有一些标志 NOT TO OMMIT MYSQL FUNCTION。这个库只是忽略了你的 rand 函数到字符串,因此你得到空白输出,做研究在 api 上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多