2014-11-14 2 views
0

다음 코드가 있습니다. phpmyadmin에서 올바르게 작동합니다. SUM_OF_NULLs의 합계를 표시하려면 무엇을 변경해야합니까?PHP Mysqli가 결과 합계를 표시합니다

$query = " 
    SELECT (
     (CASE WHEN `name_kid`='X' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_kid`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_kid`='A' THEN 1 ELSE 0 END) 
     +(CASE WHEN `bday`='0000-00-00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `born_city`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `born_country`='X' THEN 1 ELSE 0 END) 
     +(CASE WHEN `topos_katoikias`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `ithageneia`='0' THEN 1 ELSE 0 END) 
     +(CASE WHEN `amea_text`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `date_eis`='0000-00-00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `date_exit`='0000-00-00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sur_fysikos`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_fysikos`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `ithag_fysikos`='0' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sur_mother_fys`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_mother_fys`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `ithag_mother_fys`='0' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sur_anad`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_anad`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sur_mother_anad`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_mother_anad`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `city_anad`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sur_thet`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_thet`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sur_thet_mother`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `name_thet_mother`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `city_thet`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `ar_apof`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `date_apof`='0000-00-00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `protodikio`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `case_close`='0000-00-00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `kid_thetos_sur`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `kid_thetos_name`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `arithmos_mitrwou`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `code_forea_filox`='00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `ar_forea_filox`='' THEN 1 ELSE 0 END) 
     +(CASE WHEN `code_forea_fakelos`='00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sxetikoi_fakeloi`='00' THEN 1 ELSE 0 END) 
     +(CASE WHEN `sur_kid`='' THEN 1 ELSE 0 END) 
    ) AS SUM_OF_NULLs FROM `fakelos-final` 
"; 
if ($result2 = $mysqli->query($query)) { 
    printf("Total: %d \n", $result2->SUM($result2)); 

    /* free result set */ 
    $result2->close(); 
} 

답변

0

MySQL의 sum 기능 만 사용하면됩니다. 그렇게하면 합계를 포함하는 한 행만 반환됩니다.

$query = " 
    SELECT SUM(
     (CASE WHEN `name_kid`='X' THEN 1 ELSE 0 END) 
     ... 
     +(CASE WHEN `sur_kid`='' THEN 1 ELSE 0 END) 
    ) AS SUM_OF_NULLs FROM `fakelos-final` 
"; 
if ($result = $mysqli->query($query) && $row = $result->fetch_array()) { 

    printf("Total: %d \n", $row['SUM_OF_NULLs']); 

    /* free result set */ 
    $result->close(); 
} 
+0

경고를 반환합니다 : mysqli_result :: fetch_array() : ERROR에 mysqli_result를 가져올 수 없습니다. – teok1979

관련 문제