2012-01-12 52 views
0

我花了一整天的时间使用Google和删除并试图实现此代码。我一直在尝试使用php和mysql来实现类似于reddit的网站。我一直在关注另一个问题:PHP MYSQL Query Algorithm Help,它工作得很好,位居行根据算法myphpadmin内对前一个问题的编码,当我查询的存储功能如何使用基于reddit的算法在存储函数的修改下查询选择所有的mysql行?

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 /脸谱似的墙已经预设了我的每一行mysql和一切正常工作。但是当我将其更改为

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

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

我的语法有什么问题吗?或者是不可能使用存储的函数查询全部选择以在PHP中命令结果?

+0

您需要更好地定义“不工作”。你有错误吗?它产生的结果是否与预期不同? – 2012-01-12 04:28:03

+0

谢谢德文让我变得更清晰。我的意思是没有输出。所以例如在我的PHP中,当我有$ q =“SELECT * FROM wallposts ORDER BY votes_up DESC”;一切正常。但是当我将它改为$ q =“SELECT *,reddit_rank('time','votes_up','votes_down')FROM'wallposts' ORDER BY rank LIMIT 0,30”;该网页只会返回白色屏幕。 – tjones 2012-01-12 04:33:44

+0

尝试在查询周围添加'try ... catch'并获取以处理任何异常并打印'mysql_num_rows($ r)'的值以查看是否返回任何内容。 – 2012-01-12 04:46:00

回答

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 

瞧!

相关问题