本帖最后由 xuzuning 于 2010-07-28 19:14:02 编辑

解决方案 »

  1.   

    不错,挺好的,将总条数存到cookie中提高性能,不过也许有时候会出错(不错出错的几率很小),也就是突然总记录数变了
      

  2.   

    你这种方式没什么好改的。
    你这里面有一个问题,就是使用cookie把总条数存入cookies。
    比如,新闻页有100条,产品页有50条,用户既浏览了新闻页,又浏览了产品页,你说会出现什么情况????
      

  3.   

    请问运行过么?
    $mysqli这个没问题?
      

  4.   

    楼主的方法是否是通过域名地址的方式传啊(HTTP的包装不支持可写的连接)
      

  5.   

    +
    的确,那样的话都用以个cookie会混的,最好不要用cookie,而是随时取得的,这样更新方面比较好,不会出现cookie混乱的错,如果非要用cookie的话推荐你将cookie存的记录数的key是有外部传参进来的,这样就不会出现cookie混乱的情况了
      

  6.   


    其实这个cookie 的名称应该是作为参数穿进去的,用的asp 叶子的思路
      

  7.   


    //return之前的代码
     //if ($mysqli->errno <> 0 ) {
      closedatabase();
      printf("Statement failed %d: (%s) %s\n" ,$mysqli->errno,$mysqli->sqlstate,$mysqli->error);
    // }//把if条件取消,再执行一次代码试试
    //不是无缘无故问的,自己看看吧
      

  8.   

    $mysqli应该是局部的吧没看到你哪里有申明如果你的代码是完整给出的测试时候,加上exit吧,不要关闭警告、提示
      

  9.   

    既然 $page 作为参数传入,那么又何必 global $page;说明中有 &$page
    那么声明中应为
    function getresult($id,$column,$table,$where,$order,$ifcookie,$pagesize,&$page,$conn){如果我是在函数里调用getresult呢?$mysqli 没有赋值,也没有声明为全局变量把总条数存入cookies 是败笔,你如何确定我的浏览器支持cookie呢?
      

  10.   


    明白了$page以前是引用传入的,后来改成全局了,没有改说明cookie if($ifcookie && isset($_COOKIE["p_c"])){ 这句判断了$mysqli 这个书写错误,应该是$conn,以调整如果我是在函数里调用getresult呢? 这句不太懂,您有时间,能讲讲吗?谢谢了
      

  11.   

    1) 3句global都可以不用. page是参数,另2个后面都直接赋值了.
    2) if(empty($sum)){
       closedatabase();
       printf("Statement failed %d: (%s) %s\n" ,$mysqli->errno,$mysqli->sqlstate,$mysqli->error);
       exit();
      }
     这里empty($sum) 不一定就是出错, 也可能就是返回空集 另这里和下面的
     if ($mysqli->errno <> 0 ) {
      closedatabase();
      printf("Statement failed %d: (%s) %s\n" ,$mysqli->errno,$mysqli->sqlstate,$mysqli->error);
     }
      两处不一致,同样出错,一个是返回,一个直接exit了.3) 嗯,如果要保存sum, 似乎也是先考虑session较好4) 参数顺序可以调整一下, 有些可以加上缺省值, 这样可以简化调用的code
       $conn这样必须有的参数放在前面5) $pagesize 最好检查一下, 如果为负或0, 会导致错误, 当然你可以放在外面检查, 但里面放一个更安全点.6) 学了2个星期,写得非常好