Как запросить выбор всех моих строк mysql при модификации хранимой функции с помощью алгоритма на основе reddit? - PullRequest
0 голосов
/ 12 января 2012

Я потратил целый день, гугля, удаляя и вставляя, пытаясь реализовать этот код.Я пытался реализовать сайт, похожий на reddit, используя php и mysql.У меня следующий вопрос: Справка по алгоритму запросов 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.

Что-то не так с моим синтаксисом или это невозможнозапросить выбор всех с сохраненной функцией, чтобы упорядочить результаты в php?

1 Ответ

0 голосов
/ 12 января 2012

Я думаю, что нашел решение, создав представление, а затем запросив это представление вместо исходной таблицы. После того, как я запросил сохраненную функцию в 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

Voila!

...