我有以下MySQL查询,和PHP代码格式化Count
结果在一个单一的数组:
$equalDimensions_query =
"SELECT 'allEqual' AS COL1,COUNT(*) AS imgCount FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION ALL
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) AS union_table
WHERE primaryId = $imgId AND imgWidth = $maxImageWidth AND imgHeight = $maxImageHeight
UNION ALL
SELECT 'widthEqual' AS COL1,COUNT(*) AS imgCount FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION ALL
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) AS union_table
WHERE primaryId = $imgId AND imgWidth = $maxImageWidth AND imgHeight != $maxImageHeight
UNION ALL
SELECT 'heightEqual' AS COL1,COUNT(*) AS imgCount FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION ALL
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) AS union_table
WHERE primaryId = $imgId AND imgWidth != $maxImageWidth AND imgHeight = $maxImageHeight";
$equalDimensions_data = mysql_query($equalDimensions_query) or die('MySql Error' . mysql_error());
while ($row = mysql_fetch_assoc($equalDimensions_data)) {
$cnt[$row['COL1']] = $row['imgCount'];
}
var_dump($cnt);
(注意我将var_dump($cnt)
作为最后一行)
var_dump
返回如下数组:
array
(
'allEqual' => string '2' (length=1)
'widthEqual' => string '0' (length=1)
'heightEqual' => string '0' (length=1)
)
我很好奇为什么计数作为字符串返回,而不是作为整数?
应该作为整数返回吗?或者在处理计数查询时,将结果作为字符串返回是常态吗?
谢谢。
from http://www.php.net/manual/en/function.mysql-fetch-assoc.php:
返回字符串的关联数组,该数组对应于如果没有更多的行,则返回FALSE。
(强调我的)对于MySQL驱动程序来说,将所有内容作为字符串提供给您可能更容易,并假设您知道如何处理它。只需使用intval()来获取整数值
一切都作为字符串返回,不管它是列值(列的类型不起任何作用)还是函数的结果(返回值的类型也不起任何作用)。