【问题标题】:Objects in while loopswhile 循环中的对象
【发布时间】:2017-05-01 11:14:14
【问题描述】:

为什么下面的代码可以打印一个mysql行数组

    $base=new mysqli("...");        
    $query="SELECT *somthing* FROM *table* WHERE *some match*";
    $result=$base->query($query);
    while ($row=$result->fetch_assoc()) {
        var_dump($row);      
    };

,虽然这个被困重复打印第一场比赛?

    $base=new mysqli("...");        
    $query="SELECT *somthing* FROM *table* WHERE *some match*";        
    while ($row=$base->query($query)->fetch_assoc()) {
        var_dump($row);          
    };

【问题讨论】:

    标签: php mysql object while-loop


    【解决方案1】:

    因为在第二个示例中,您在循环的每次迭代中都调用查询以及结果,这意味着查询结果集中的第一个结果将在每次fetch_assoc 中使用。

    以这个为例来说明例子:

    class Test
    {
        public function getQuery()
        {
            echo 'x';
            return $this;
        }
    
        public function getResult()
        {
            echo 'y';
            return $this;
        }
    }
    

    如果你循环while ($row = $class->getQuery()->getResult()) {,那么上面的 echo 语句每次都会输出 x 和 y。这突出了您每次都获得第一个结果时所看到的症状:xyxyxyxy...

    再一次 - 如果你以 $query = $class->getQuery() 的形式运行上面的类,那么 while ($row = $query->getResult()) { 你会看到一个“x”和很多“y”:xyyyyyyy...

    【讨论】:

      猜你喜欢
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2022-01-22
      • 2017-07-24
      相关资源
      最近更新 更多