0

条件付きで合計行数を取得するのに問題があります。これは私のコードです

$pagesize = 10;
$recordstart = (int)$_GET['recordstart'];
$recordstart = (isset($_GET['recordstart'])) ? $recordstart : 0;

$town = $_GET['label_town'];
$sub = ucfirst($_GET['label_sub']);

これが私の選択条件です。また、この条件を使用して合計行をカウントします

if (isset($_GET['label_town']) === true && isset($_GET['label_sub']) === true) {
$where = "WHERE p.label_town = '$town' AND p.label_sub = '$sub' AND `visible` = 1";
} else if (isset($_GET['label_town']) === true && isset($_GET['label_sub']) === false) {
$where = "WHERE p.label_town = '$town' AND `visible` = 1";
} else {
$where = "WHERE `visible` = 1";
}

// Selecting data 
$all_page_index = mysql_query("SELECT p.page_id, p.timestamp, p.label_town, p.label_sub, p.ime_nekretnine, p.mjesto, p.cijena_noc, p.krevet_apart, p.broj_apart, p.min_nocenja, p.description, p.visits, i.image_id, i.page_id, i.ext
FROM data_page AS p
LEFT JOIN (
SELECT MAX( image_id ) AS max, page_id
FROM images
GROUP BY page_id
) AS n ON p.page_id = n.page_id
LEFT JOIN images AS i ON i.image_id = n.max
$where
ORDER BY p.page_id DESC
LIMIT $recordstart, $pagesize");

// Counting rows with conditions
function totalrows() {
    return mysql_result(mysql_query("SELECT COUNT(p.page_id) FROM data_page AS p $where"), 0);
}

データの選択と表示は正常に機能しますが、SELECT COUNT に問題があります。条件に関係なく、常に totalrows をカウントします。どこで間違っていますか?

ありがとう!

4

1 に答える 1

3

Your COUNT is within function definition, where $where isn't defined. You need to pass it as a parameter or move query outside the function.

于 2013-04-12T15:00:37.687 に答える