【发布时间】:2017-02-08 20:52:25
【问题描述】:
这可能是一个绝对的菜鸟问题,因为我是 PDO 的新手,所以我无法真正理解发布的其他解决方案。 我要做的就是在数据库类中显示 fetchall 返回的查询结果
我已经建立了一个索引页面,它创建了一个数据库类的实例并调用了 getData 方法,该方法运行 FetchAll 并返回记录。
$db = new database($pdo);
$sql = 'SELECT * FROM fruit';
$rows = $db->getData($sql);
$count = $db->getCount($sql);
echo $count;
print_r($rows);
foreach($rows as $fruit){
echo $fruit->'fruitName';
}
代码全部运行,$rows 数组填充了获取数据的结果,计数结果为 8,这是正确的,但我无法使用 foreach 输出结果!
数据库类在这里供参考:
class database
{
function __construct($pdo)
{
$this->pdo = $pdo;
}
function getData($sql)
{
$query = $this->pdo->prepare($sql);
$query->execute();
return $query->fetchAll();
}
function getCount($sql)
{
$query = $this->pdo->prepare($sql);
$query->execute();
return $query->rowCount();
}
}
【问题讨论】:
-
这是什么:
print_r($rows);输出? -
你的
database类真的没有比纯粹的PDO添加任何有价值的东西。实际上,您完全不必要地执行了两次查询,因为您编写的database类阻止您使用相同的查询获取行数和数据。摆脱它,直接使用PDO。 -
print_r提供了类似Array ( [0] => Array ( [fruitid] => 1 [0] => 1 [fruitName] => apple [1] => apple [colour] => green [2] => green的内容。我可以看到代码效率低下,谢谢。我实际上只是添加了 count 方法,以便我可以仔细检查我得到了正确的数据。