#php #mysql #arrays
#php #mysql #массивы
Вопрос:
$query = $db->query("SELECT * FROM orders");
while ($row = mysql_fetch_array($query)) {
$cost= array_sum($row['cost']);
}
Это не работает, я хочу вычислить сумму всех элементов, но я получаю эту ошибку:
Предупреждение: array_sum() ожидает, что параметр 1 будет массивом, строка, указанная в C:xampphtdocsfalcoclassescontroller.php в строке 303
Есть идеи, как вычислить все элементы, поступающие из mysql?
Спасибо за ваше время и помощь.
Комментарии:
1. Причина, по которой ваше решение выдает ошибку, заключается в том, что кажется, что $row — это массив (содержащий одну строку из вашей таблицы), а $row[‘cost’] — это единственное значение. Кроме того, вы пытаетесь суммировать одну строку, поэтому результатом будет значение поля
cost
. Приведенные ниже ответы являются разумными вариантами, особенноselect sum(cost) from foo...
инструкция mysql
Ответ №1:
Почему бы не позволить MYSQL справиться с этим?
$query = $db-> запрос(«ВЫБЕРИТЕ заказы.*,СУММА (стоимость) как sum_cost ИЗ заказов»);
Ответ №2:
Если вам нужна просто сумма, вы можете позволить базе данных сделать это за вас:
Select sum(cost) from orders
Ответ №3:
Попробуйте это:
$query = $db->query("SELECT * FROM orders");
$cost = 0;
while ($row = mysql_fetch_array($query)) {
$cost = $row['cost'];
}
Или из mysql:
$query = $db->query("SELECT sum(`cost`) as `cost` FROM orders");
while ($row = mysql_fetch_array($query)) {
$cost = $row['cost'];
}
Ответ №4:
это должно сработать:
$query = $db->query("SELECT * FROM orders");
$cost = 0;
while ($row = mysql_fetch_array($query)) {
$cost = $row['cost'];
}
или даже лучше
$query = $db->query("SELECT SUM(cost) FROM orders");
list($cost) = mysql_fetch_row($query);
Ответ №5:
Действительно, звучит так, как будто вам просто нужна сумма.
'SELECT SUM(cost) as sum_cost FROM ORDERS'