Получение суммы столбца - PullRequest
0 голосов
/ 20 июня 2019

пытается получить сумму (итогового) столбца в таблице «транзакции», где тип = «исходящий», но я не могу ее распечатать.

$stmt4 = $dbcon->prepare("SELECT SUM(total) FROM transactions WHERE proid=$id ");
$stmt4->execute();
$thetotal= $stmt4->fetch(PDO::FETCH_ASSOC);

echo $thetotal;

Я получаю эту ошибку

Преобразование массива в строку в (..)

Как вывести сумму итогового столбца?

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

После того, как вы извлечете набор результатов, вы получите массив результатов - он не может быть напечатан как значение из echo.Вам нужно выбрать, какой именно столбец вы хотите напечатать.Это проще, если вы назначите ему псевдоним, выполнив SUM(total) AS tot - теперь имя суммы равно tot.

Также используйте правильные ограниченные параметры с подготовленным оператором.

$stmt4 = $dbcon->prepare("SELECT SUM(total) as tot FROM transactions WHERE proid=?");
$stmt4->execute([$id]);
$thetotal = $stmt4->fetch(PDO::FETCH_ASSOC);

echo $thetotal['tot'];
0 голосов
/ 20 июня 2019

Предупреждение Никогда не помещайте переменные PHP в строку SQL. Это делает ваш SQL уязвимым для SQL-инъекций и может стать причиной многих проблем для вас.

Вы можете решить свою проблему, используя fetchColumn

$stmt4 = $dbcon->prepare("SELECT SUM(total) FROM transactions WHERE proid=? ");
$stmt4->execute([$id]);
$thetotal = $stmt4->fetchColumn();

echo $thetotal;

или вы можете использовать fetch с PDO::FETCH_COLUMN

$stmt4 = $dbcon->prepare("SELECT SUM(total) FROM transactions WHERE proid=? ");
$stmt4->execute([$id]);
$thetotal = $stmt4->fetch(PDO::FETCH_COLUMN);

echo $thetotal;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...