gpt4 book ai didi

PHP PDO SQL 只返回一行数据而不是所有行

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:59 25 4
gpt4 key购买 nike

我正在使用 PHP PDO 扩展来创建数据库类别表中所有项目的列表。预期结果不正确,只返回一行数据而不是全部预期的行。通过在 phpMyAdmin 控制台中运行相同的 SQL 语句,我得到了预期的结果所有数据行的结果。我需要知道我在使用 pdo 时忽略了什么。

当前代码:

    $catId = 0;   

$sql = "SELECT *
FROM category
WHERE cat_parent_id = :catId
ORDER BY cat_name";

$_stmt = $this->_dbConn->prepare($sql);
$_stmt->bindParam(":catId", $catId, PDO::PARAM_INT);
$_stmt->execute();

$rows = $_stmt->fetch(PDO::FETCH_ASSOC);

// display PDO result - only getting one row instead of all rows.
print_r($rows);

Array ( [cat_id] => 3
[cat_parent_id] => 0
[cat_name] => Shop
[cat_description] => Seminars
[cat_image] => c72e.gif
)

// NOTE: By running the same SQL within the phpMyAdmin
// console I get the expected results with all rows.
Array ( [cat_id] => 3
[cat_parent_id] => 0
[cat_name] => Shop
[cat_description] => Seminars
[cat_image] => c72e.gif
),
( [cat_id] => 1
[cat_parent_id] => 0
[cat_name] => Site Map
[cat_description] => List content links
[cat_image] => c83b.gif
)

最佳答案

PDOStatement::fetch()一次只会返回 1 行。

你可以使用 PDOStatement::fetchAll() :

$rows = $_stmt->fetchAll(PDO::FETCH_ASSOC);

或者创建一个循环,在其中不断调用 PDOStatement::fetch() 直到它返回 false:

$rows = array();
while( $row = $_stmt->fetch(PDO::FETCH_ASSOC) ) {
$rows[] = $row;
}

但后一个示例有点多余,如果您无论如何都想一次获取所有行,除非您想要解决一些内存问题。

关于PHP PDO SQL 只返回一行数据而不是所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47502460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com