说明
大家好,我在php中遇到一个关于pdo的一个非常奇怪的问题,如果我使用Sybase的sqlDbx (数据库管理软件)搜索,我可以得到正确的结果,但如果我使用pdo进行搜索,我只能获得一个不完整的行,我也使用fetchAll来查看结果。这意味着通过sqlDbx和pdo获得不同的resutls相同的sql语句。
代码和现象
mysql语句:
SELECT
DATE_ID,
HOUR_ID,
ROUND(100*SUM(pmRrcConnEstabSucc)/SUM(pmRrcConnEstabAtt),6) AS leftAxis,
ROUND(100*SUM(pmRrcConnEstabSucc)/SUM(pmRrcConnEstabAtt)*((SUM(pmErabEstabSuccInit)+SUM(pmErabEstabSuccAdded))/(SUM(pmErabEstabAttInit)+SUM(pmErabEstabAttAdded))),6) AS rightAxis
FROM
dc.DC_E_ERBS_EUTRANCELLTDD_RAW
WHERE
(DATE_ID BETWEEN '2015-12-11' AND '2015-12-11') AND ERBS='LDF32E44'
GROUP BY
DATE_ID,HOUR_ID
ORDER BY
DATE_ID asc, HOUR_ID asc
执行:
$res = $db->query($sqlCommand, PDO::FETCH_ASSOC);
print_r($res->fetchAll());
来自pdo的结果:
Array
(
[0] => Array
(
[DATE_ID] => Dec 11 2015 12:00:00:000AM
[HOUR_ID] => 0
[leftAxis] => 100.0000000000000000000000000000000000
[rightAxis] =>
)
)
这个sql语句Involvs两个公式:
leftAxis = 100*pmRrcConnEstabSucc/pmRrcConnEstabAtt
rightAxis = 100*pmRrcConnEstabSucc/pmRrcConnEstabAtt*((pmErabEstabSuccInit+pmErabEstabSuccAdded)/(pmErabEstabAttInit+pmErabEstabAttAdded))
(ps:还有很多其他的公式,他们可以通过pdo和sqlDbx获得严格的结果)
我的分析:
问题可能来自rightAxis,因为返回结果丢失了rightAxis,所以我尝试将rightAxis拆分为:
100*pmRrcConnEstabSucc/pmRrcConnEstabAtt
((pmErabEstabSuccInit+pmErabEstabSuccAdded)/(pmErabEstabAttInit+pmErabEstabAttAdded))
我分别执行这两个公式,我可以得到正确的结果,但如果我把它们组合在一起,它就不起作用。我试着改变*/
的顺序,它也没有工作。
所以,谁能知道问题是什么?