2017-07-19 78 views
0

我有麻煩了。 我有一個SQL表格,其中包含最終確定,關閉,取消和正在處理的流程,這些流程也與區域(人才,外包,數字等)相關聯。 我想根據進程狀態來計算AVG的總面積。 ,所以我有:PHP SQL除以零警告但不爲零

$tiempoQueryFinalizados = mysqli_query($con, 
"SELECT IFNULL(SUM(IFNULL(timestampdiff(DAY,fecha_creacion,IFNULL(fecha_cerrado,NOW())),0)),0) AS finalizados, 
    (Select count(id_proceso) from proceso where estado ='FINALIZADO' and fecha_cerrado is not null) as c 
    FROM proceso 
    WHERE estado = 'FINALIZADO' and fecha_cerrado IS NOT NULL and area ='".$rowArea['id_area']."' "); 

然後我在PHP中使用一個簡單的劃分與

mysqli_fetch_assoc($tiempoQueryFinalizados)['finalizados']/mysqli_fetch_assoc($tiempoQueryFinalizados)['c']

,但我得到的錯誤Warning: Division by zero,所以我檢查,如果是零,但事實並非如此。在這個例子中mysqli_fetch_assoc($tiempoQueryFinalizados)['c'] = 2但仍然算作0

請幫忙嗎?

編輯:面積由$areaQuery = mysqli_query($con,"SELECT * from area where id_area!=0");

+2

'mysqli_fetch_assoc($ tiempoQueryFinalizados)['finalizados']'爲null或零。 – Ian

+0

有時候,但仍然是0/2 = 0 – UnsignedFoo

+0

您希望該查詢返回多少行? – RiggsFolly

回答

2

這是一個獲取數組返回並不是一個簡單的除法

mysqli_fetch_assoc($tiempoQueryFinalizados)['finalizados']/
mysqli_fetch_assoc($tiempoQueryFinalizados)['c'] 

mysqli_fetch_assoc()每個呼叫從自己的ResultSet獲得一個新行。因爲查詢只返回一行,第二次調用將返回等於零的FALSE。

所以這將是做檢索和計算的一種更好的方式

$row = mysqli_fetch_assoc($tiempoQueryFinalizados); 
$calc = $row['finalizados']]/$row['c']; 
0

好吧,我忘了,當每一個電話你做mysqli_fetch*你跳到下一個寄存器,所以只有我需要編輯

$tiempoQueryFinalizados = mysqli_query(...

通過

$tiempoQueryFinalizados = mysqli_fetch_assoc(mysqli_query(...

現在 $tiempoQueryFinalizados['finalizados']/$tiempoQueryFinalizados['c']

作品非常好:) 謝謝大家!