Table frounds:
ID | oname | fraised
----- ------------ -----------------------------
1 | linkedcare | $15,000,000
2 | Shankai Sports International | $45,000,000
3 | Puma | $95,000,000
4 | Nike Women | $75,000,000
PHP-код
$result = mysqli_query($con,'SELECT SUM(fraised) AS SUM FROM frounds');
$row1 = mysqli_fetch_assoc($result);
$sum = $row1['SUM'];
echo $sum;
Вышеуказанный пункт - '0'
Что я хочу результат
сумма поля "fraised" в качестве примера здесь "230 000 000", но я получаю вывод "0",
Где я не прав?
Есть два способа сделать это.
Во-первых: Если вы хотите сохранить формат fraised
в своей таблице, используйте код php, чтобы сделать сумму для вас.
$result = mysqli_query($con, 'SELECT fraised FROM frounds');
$sum = 0;
while ($row1 = mysqli_fetch_assoc($result)) {
$sum += str_replace('$','',$row1['fraised']);
}
echo $sum;
Во-вторых: измените тип данных в таблице на int
в этом случае вы не можете хранить данные в формате $15,000,000
, но вы можете использовать формат номера php для отображения данных в формате желаний
Потому что вы используете string
вместо number
должны изменить тип данных или вам нужно удалить $
и ,
вместо строки. Запрос:
SELECT SUM(cast(REPLACE(substring(fraised,2),',','') as decimal)) AS SUM FROM frounds;
вы можете использовать следующий код:
$result = mysqli_query($con,"SELECT SUM(cast(REPLACE(substring(fraised,2),',','') as decimal)) AS SUM FROM frounds;");
$row1 = mysqli_fetch_assoc($result);
$sum = $row1['SUM'];
echo $sum;
Не лучшая практика, но вы можете раздеться символ валюты и запятые, литое fraised
к ряду, а затем сумма:
SELECT
SUM(CAST(REPLACE(SUBSTRING(fraised, 2), ',', '') AS UNSIGNED)) AS SUM
FROM frounds;
Двигаясь вперед, используйте номер столбца, возможно десятичный, для хранения информации о валюте. Вы должны просмотреть вышеуказанный запрос как временный взлом, пока не сможете исправить дизайн своей таблицы.
Попробуйте этот запрос, он будет работать для вас
select SUM(REPLACE(REPLACE(fraised,'$',''), ',' , '')) as sum from frounds
После обновления запроса ваш код будет
$result = mysqli_query($con,'select SUM(REPLACE(REPLACE(fraised,'$',''), ',' , '')) as sum from frounds');
$row1 = mysqli_fetch_assoc($result);
$sum = $row1['sum'];
echo $sum;
Причина: вы получаете ноль в связи с типом данными вашей колонки fraised
, которые имеют значение в следующем формате '$15,000,000'
. В моем решении я переместил $
и comms
.