0

私はこのコードを実装しようとして、一日中グーグルと削除と挿入に費やしました。私はphpとmysqlを使用してredditのようなサイトを実装しようとしています。私は別の質問に従っています:PHP MYSQLクエリアルゴリズムヘルプとそれは非常にうまく機能し、ストアド関数をクエリするときに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で機能することはわかっていても、Webページは白い画面しか返しません。

構文に問題がありますか、またはストアド関数を使用してselect allをクエリして、結果を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 に答える