PDO fetchAll()和fetch_all()之间的区别是什么


What is the difference between PDO fetchAll() and fetch_all()?

我正试图使用prepared语句从数据库中获取数据。我是PDO的新手,所以我搜索了一下。下面是两个不同的模式,给了我相同的结果。

图案1

$pdo=new PDO("mysql:dbname=dummy_db;host=localhost","root","");
$statement=$pdo->prepare("SELECT * FROM mytable");
$statement->execute();
$results=$statement->fetchAll(PDO::FETCH_ASSOC);
print_r($results);

图案2

$stmt = $conn->prepare("select * from mytable");
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_all(PDO::FETCH_ASSOC);
print_r($row);

以上两种模式给了我几乎相同的结果,所以我想知道哪种模式适合获取数据,它们之间有什么区别。如果有人指导我,我将不胜感激。

这是一个有趣的问题。

尽管您可能没有意识到第二个代码片段与PDO无关,属于mysqli,但这个问题仍然有一定的意义。

因为PDO的fetchAll()比mysqli中的简单fetch_all()有用得多,这要归功于PDO::FETCH常量,它可以让你以几十种不同的格式获取数据。

这就是为什么PDO比mysqli更受推荐的原因之一。