0

我花了一整天的时间在谷歌上搜索、删除和插入试图实现这段代码。我一直在尝试使用 php 和 mysql 实现一个类似 reddit 的网站。我一直在关注另一个问题:PHP MYSQL Query Algorithm Help,当我查询存储函数时,它运行良好,并根据 myphpadmin 中上一个问题中编码的算法对行进行排名

SELECT
*,
reddit_rank(`time_added`, `up_votes`, `down_votes`) as rank
FROM
`table`
ORDER BY
rank;

,但是当我将查询粘贴到我的 php 文件中时:

<?php 
include("config.php");
$q= "SELECT *,reddit_rank(`time` , `votes_up` , `votes_down`) FROM `wallposts` ORDER BY rank LIMIT 0 , 30";
$r = mysql_query($q);
if(mysql_num_rows($r) > 0) {
while($row = mysql_fetch_assoc($r)){
...?>

它不起作用,我得到一个白色的 HTML 屏幕。因此,例如在我的 PHP 中,当我有

$q = "SELECT * FROM wallposts ORDER BY votes_up DESC"; 

我的类似 reddit/facebook 的墙已经从 mysql 中预先添加了我的每一行,并且一切正常。但是当我把它改成

$q= "SELECT *,reddit_rank(`time` , `votes_up` , `votes_down`) FROM `wallposts` ORDER BY rank LIMIT 0 , 30"; 

该网页只返回一个白屏,即使我知道它在 myphpadmin 中有效。

我的语法有问题还是无法使用存储函数查询全选以在 php 中对结果进行排序?

4

1 回答 1

0

我想我通过创建一个视图然后查询该视图而不是原始表找到了解决方案。在myphpadmin中查询存储函数后:

SELECT
*,
reddit_rank(`time_added`, `up_votes`, `down_votes`) as rank
FROM
`table`
ORDER BY
rank; 

然后我在返回这些结果后创建了一个视图。然后,我没有在我的 PHP 文件中以相同的方式查询,而是使用以下命令查询新的 mysql 视图:

SELECT * FROM [view] ORDER BY rank

瞧!

于 2012-01-12T16:12:38.197 回答