Ниже мой код, и по какой-то причине он не дает мне 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']);