我有一个我似乎无法解决的问题。我试图从select语句中获取行数。
我首先要说的是,我已经尝试了针对此问题进行谷歌搜索的所有方法。
我正在使用结果集,所以我不想再进行第二次查询。
查询使用准备好的select语句,如果我理解正确,这似乎是一个主要问题。
我决定使用PHP的本地count()
函数尝试一种简单的方法。这引导我到这里因为我终于到达了绳子的尽头。
在我的一个班级中的详细信息......我这样做了一个查询。
// Create database connection
$database = DatabaseFactory::getFactory()->getConnection();
// Set and execute database query
$sql = "SELECT * FROM `service_orders` WHERE `agency_id` = :agency_id $filter ORDER BY $sort $order $per_page";
$query = $database->prepare($sql);
$query->execute($query_array);
// If results
if ($query->rowCount() > 0) {
$results = $query->fetchAll();
self::$order_count = "Count: " . count($results);
return $results;
}
// Default, return false
return false;
首饰
count($results)
,我会得到数据库中的总行数(让我们说50)。print_r($results)
,它会显示具有适当条目数的数组(假设为10),这当然不同于数据库中的总行数。这两者有何不同?它好像count($results)
误读了结果数组。
更多调查结果
在我的实际php页面中,我调用该类来检索这样的数据。
$results = OrderModel::getServiceOrders();
echo count($results);
奇怪的是,如果我再执行count($results)
,它会给我正确的结果数组读数(在我的例子中这将是10)。
我对此感到困惑,因为计数功能正在完全相同的数组上执行。唯一的区别是一个在类中的数组上调用,另一个在从类返回的数组上调用。
在此实例中使用count()
时,有没有人对如何解决这个问题或者为何存在差异有任何想法?
提前谢谢大家! 詹姆斯
其他信息
这是另一个令人烦恼的场景。如果我将计数与实际结果一起返回,我可以在页面上以正确的值(10行)访问它。然而,如果我将它设置为会话变量,并以这种方式访问它,则计数是整个数据集(50行)。这两个值怎么可能不一样?!
$results = $query->fetchAll();
Session::set("order_count", $total[0]); // Yields 50 (incorrect)
return [
"results"=> $results,
"count"=> $total[0], // Yields 10 (correct)
];