php - 这个php函数应该递归运行吗?

标签 php mysql html sql database

我在使用类文件中的方法时遇到问题:

    public static function getPageLeft($pid)
{
    self::_dbConnect();
    echo "now " .$pid;
    $pid--;
    echo " after ". $pid;
    $data = mysql_query("SELECT id FROM evening_pages WHERE id='".$pid."'") or die(mysql_error());
    $rows = mysql_num_rows($data);
    if($rows == 1){
        echo "  in  ";
        return $data;

    }elseif($pid != self::getMinPage()){
        self::getPageLeft($pid);
        echo " Current: " . $pid . " min: " .self::getMinPage();
    }
}

我的 echo 仅用于调试,我得到:

现在 22 之后 21 现在 21 之后 20 当前:21 分钟:1

此代码用于查找数据库驱动的 CMS 中剩余的下一页,以防客户端从数据库中删除一行,它会查找下一个较低的值。

所以页面 id 是 22,你打开,在数据库中查找 id 21,如果它不存在,它应该为行返回 0 并继续并重试,但是在 id 20 上,但是有一个 id = 20 的条目.

有人发现代码有问题吗?

当它试图找到一个在当前页面之前不存在的页面时也会出现此错误,例如在第 22 页上但没有 21 的 ID:

警告:mysql_fetch_array() 期望参数 1 为资源,第 37 行/home/prelas/public_html/index.php 中给出的 null

那里的代码(第 37 行是 while):

    $getPageLeft = sql::getPageLeft($pid);
while($row = mysql_fetch_array($getPageLeft)){
        $pageleft = $row['id'];
    }

非常感谢。

只需快速编辑:“in ”永远不会得到回应,但是当没有已删除的页面时,导航工作正常。

进一步编辑:使用代码的代码(如 37):

    $navigation = '<div id="direction">
      <span class="inNav"> <a href="index.php?pid='. $min .'">&lt;&lt;</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php?pid='. $pageleft .'">&lt;</a>&nbsp;&nbsp; </span><span class="black">&bull;</span><span class="inNav">&nbsp;&nbsp;&nbsp;<a href="index.php?pid='. $pageright .'">&gt;</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">&gt;&gt;</a></span>
  </div>'

因此您可以看到它在那里使用了 $pageleft,但是当它处理空白页时,该值什么也没有(空)。

最佳答案

你为什么不写SQL语句获取下一个较低的ID?例如:

 SELECT `id`
   FROM `evening_pages`
   WHERE `id` < ?
   ORDER BY `id` DESC
   LIMIT 1

或者:

 SELECT MAX(`id`)
   FROM `evening_pages`
   WHERE `id` < ?

这样,您只需检查查询是否返回了某些内容。更少的代码,更少的数据库请求开销。

mysql 扩展正在被淘汰。了解如何使用 mysqli 或 PDO,并阅读 SQL injection 的危险.

关于php - 这个php函数应该递归运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173243/

相关文章:

javascript - 使用带有动态 header 的数据表在我的网站上显示 mysql 结果

javascript - HTML5 canvas 多重效果 - 锯齿状边缘

php - 在 PHP 中每行添加 4 个项目

php - 如何转到上一篇文章mysql id

php - Paypal 沙箱错误: Things doesn't appear to be working at the moment

mysql - 为什么会出现这个错误 "#1215 - Cannot add foreign key constraint "?

mysql - 组合两个快速查询会导致查询速度极慢

php - PHP这里如何避免无限递归?

java - JPA 持久多对多错误 未选择数据库

javascript - 使用 cookies 在 jQuery 中关闭后不显示弹出窗口