MYSQLI SELECT with Limit无法正常工作

时间:2014-05-23 08:10:12

标签: php mysql sql

我正在尝试根据具有限制功能的特定条件查找数据库中表中的行数,以便我可以计算在表中某行之后匹配条件的行数。 / p>

因此我创建了我的php查询:

$q = $db->query("SELECT u.*, f.* FROM updates U LEFT JOIN friends f ON f.fid = u.userid WHERE f.uid = '$userid'  ORDER BY u.up_id DESC LIMIT $limitID, 9999999");
$nr = $q->num_rows;

然而,即使$limitID之后数据库中有更多行,它也表示没有行。 如果我试试这个:

$q = $db->query("SELECT u.*, f.* FROM updates U LEFT JOIN friends f ON f.fid = u.userid WHERE f.uid = '$userid'  ORDER BY u.up_id DESC LIMIT $limitID");
$nr = $q->num_rows;

然后它可以工作,但它不会在$limitID之后计算。任何丑闻?

2 个答案:

答案 0 :(得分:1)

根据你的查询,它应该是

$sql = "SELECT count(*) FROM updates U 
        LEFT JOIN friends f ON f.fid = u.userid WHERE f.uid = ?";
// getting stuff using prepared statements
$row = $res->fetch_row();
$num = $row[0] - $limitID;

但我怀疑它真的是你需要的。

答案 1 :(得分:-2)

使用你的常识告诉我,我设法找到了我的问题的答案,所以这里是:

$limitID = $upid;
$sql = "SELECT count(*) FROM updates u 
LEFT JOIN friends f ON f.fid = u.userid WHERE
(f.uid = '$userid' AND u.up_id > '$limitID')";
$res = $db->query($sql);
$row = $res->fetch_row();
$num = $row[0];
if($num == 0){
    // do nothing
} else {
    echo "<span class='newPosts'>" .$num. " New Post"
          . (($num>1)?'s':' ') . "</span>";
}

完美运作