php mysqli准备语句跳过第一个结果的所有方式

时间:2014-11-10 15:08:30

标签: php mysql pdo mysqli fetch

我有一个从数据库中获取数据的类。一切正常但结果“剪辑”了第一个结果。  例如,我的数据库中有15个项目,所以通过回显我应该得到的ID

1 2 3 4 ... 13 14 15

但我明白了 2 3 4 ... 13 14 15

该声明正在显示数据,但为什么它缺少第一个结果。

CODE:

private function formatResults($data){
        while($row = $data->fetch(\PDO::FETCH_ASSOC)){
            echo $row['product_id'].'<br/>';
        }
    }

    public function getAllProducts(){
        if($this->databaseConnection()){
            $stmt = $this->db_connection->prepare("SELECT * FROM products ORDER BY product_id DESC");
            $stmt->execute();
            $result = $stmt->fetch(\PDO::FETCH_ASSOC);
            $this->formatResults($stmt);
        }
    }

这是有效的原始功能,(除了错过第一行)。 我也试过只针对一行,看看它是否有所作为,但没有任何东西可以返回。

public function getAllProducts(){
        if($this->databaseConnection()){
            $stmt = $this->db_connection->prepare("SELECT * FROM products WHERE product_id = ? ORDER BY product_id ASC");
            $a =1;
            $stmt->bindParam(1,$a,\PDO::PARAM_INT);
            $stmt->execute();
            while($row = $stmt->fetch(\PDO::FETCH_ASSOC)){
                echo $row['product_id'].'<br/>';
            }
        }
    }

我不知道该怎么做,该功能似乎有效。

1 个答案:

答案 0 :(得分:1)

因为您正在抓取/丢弃一行:

$result = $stmt->fetch(\PDO::FETCH_ASSOC);  // fetch first row
$this->formatResults($stmt);                // fetch all the other rows

简单地消除&#34;获取第一行&#34;线。