Получение SUM в PDO

Ниже мой код, и по какой-то причине он не дает мне SUM. Это всегда возвращает 0. Почему он не работает?

Я использовал if ($totSubmits==''){ чтобы избежать пустых полей в моей базе данных.

Я также попытался удалить AS due_fees и использовать $dueAmont = $result[0] , но не повезло.

 $sql= "SELECT SUM(dueFees) AS due_fees FROM coursePayments WHERE studentId = $student"; $stmt = $c->prepare($sql); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_NUM); $dueAmont = $result['due_fees']; if ($dueAmont==""){ $dueAmont = '0'; } echo $student." due amount ".$dueAmont; 

Gah, используйте привязку параметров! Кроме того, fetchColumn() является приятным и легким для результатов с одной строкой / одной колонкой

 $sql= "SELECT SUM(dueFees) FROM coursePayments WHERE studentId = ?"; $stmt = $c->prepare($sql); $stmt->execute(array($student)); $dueAmont = (int) $stmt->fetchColumn(); 

добавление

При разработке всегда запускайте среду PHP с полным раскрытием информации об ошибках. Тогда вы не пропустите простые ошибки, как в вашем коде выше. В php.ini

 display_errors = On error_reporting = E_ALL 
 fetch(PDO::FETCH_NUM) 

Не принесет вам ассоциативный массив. Это массив с числовой индексацией, поэтому вы не можете найти свое поле.

PDO :: FETCH_NUM: возвращает массив, индексированный по номеру столбца, возвращенный в ваш результирующий набор, начиная с столбца 0

Делать

 fetch(PDO::FETCH_ASSOC) 

И это

PDO :: FETCH_ASSOC: возвращает массив, индексированный по имени столбца, возвращенный в ваш результирующий набор

Это то, что вам нужно, чтобы вернуть свой псевдоним.

Наконечник:

Вы можете удалить предложение if, чтобы проверить, пусто ли значение и установить его в 0.

 $dueAmont = $result['due_fees']; if ($dueAmont==""){ $dueAmont = '0'; } 

Может просто быть

 $dueAmont = intval($result['due_fees']);