Function getUserStatsByPeriod($user_tag, $start_date, $end_date){ $mysqli = new

\mysqli("localhost", "", "", "crm");


$mysqli->set_charset("utf8mb4");
$response = $mysqli->query("select SUM(spend),SUM(cards),SUM(accounts),SUM(apps),SUM(dolphin),SUM(coming),SUM(profit) from `stats` where who = '$user_tag' and DATE_FORMAT(time, '%Y-%m-%d')>=str_to_date('{$start_date}', '%Y-%m-%d') and DATE_FORMAT(time, '%Y-%m-%d')<=str_to_date('{$end_date}', '%Y-%m-%d') " );

if($response->num_rows > 0) {
$response = $response->fetch_all();

$response = ['spend' => $response[0][0] == null ? 0 : $response[0][0] , 'ekv' => (($response[0][0] * 5) / 100) == null ? 0 : (($response[0][0] * 5) / 100), 'cards' => $response[0][1] == null ? 0 : $response[0][1], 'accounts' => $response[0][2] == null ? 0 : $response[0][2] , 'apps' => $response[0][3] == null ? 0 : $response[0][3], 'dolphin' => $response[0][4] == null ? 0 : $response[0][4], 'out' => (
$response[0][0] + $response[0][1] + $response[0][2] + $response[0][3] + $response[0][4]
) == null ? 0 : (
$response[0][0] + $response[0][1] + $response[0][2] + $response[0][3] + $response[0][4]
), 'coming' => $response[0][5] == null ? 0 : $response[0][5]];
$response['out'] += (($response['spend'] * 5) / 100);
$response['profit'] = ($response['coming'] - $response['out']);

$response['roi'] = "".round(($response['coming'] - $response['out']) / $response['out'] * 100);
return $response;
}

4 ответов

20 просмотров

Я в PHP и MySQL не шарю. Но по-моему, должен быть другой способ сравнения дат

Ivanov
Я в PHP и MySQL не шарю. Но по-моему, должен быть ...

Что-то вроде time>='date 00:00:00'. Без функции над time

Слава правильно написал, но пару добавлю: 1) Он не указал, только молча переписал получшэ — но создавать соединение к базе в каждой функцыи — это в корне неправильно. Дажэ при каждом обращении к страницэ не слишком хорошо — лучшэ использовать постоянное соединение. https://www.php.net/manual/en/mysqli.persistconns.php 2) where who = '$user_tag' Никогда так не делайте. Это путь к SQL injectuons. И дажэ если вы уверены, что в $user_tag не будет строчки "'; DROP DATABASE users;" — всё равно лучшэ передавать параметры запроса как параметры. 2) Вы зачем-то сначала получаете в response результат запроса, а затем его затираете своим рещультатом функцыи. Зачем? Пытаетесь сэкономить пару сотен байт на стэке? У вас не вышло. Это, в отличие от предыдущего — не ошыбка сама по себе, но разбирать такие подмены труднее и шанс ошыбок в будущем большэ.

К уже выше сказанному добавлю, что в этом случаи лучше использовать fetch_assoc вместо fetch_all. Это значительно улучшит читаемость кода

Похожие вопросы

Обсуждают сегодня

Только сейчас дошли руки до Orange pi 5. Это нормально что на нем YOLOv5s выдает 1 кадр раз в 2-3 секунды на CPU? Это без оптимизаций и прочих настроек, просто голый запуск че...
Denis
10
Доброе утро. Подскажите, если если 4 корутины, внутри которых VideoCapture, то будут ли они работать асинхронно? Т.к. нагуглил, что Videocapture в моменте может быть открыт то...
Alexander👨‍💻
19
Всем привет! подскажите пожалуйста как можно увеличить качество фото?
Evgeniy
19
Всем привет! Подскажите пожалуйста С помощью OpenCVSharp работаю с rtsp потоком Но почему-то через +- 2 минуты поток зависает без всяких ошибок В какую сторону копать? С ...
Evgeniy
4
Кто работал с NPU на Рокчипе, можете подсказать, инициализирую модель (см. скрин 1), запускаю и на "init_runtime" выдает ошибку "undefined symbol: rknn_set_core_mask" (см. скр...
Denis
1
Я пожалуй ещё раз брошу клич: кто-нибудь хочет в рабство в ОЭЗ Алабугу на позицию инженера CV? Работы много, задачи сложные, ЗП высокая. Я передам контакт напрямую в HR.
Maxim 👀 Osminin #Slowpoke3D
13
А вы в атоме работаете да?
Alexander x*❄️❅❆
11
I have this grayscale image in opencv I want to change gray quadrilaterals to black like others It means i want to change gray color of specific color to black How can i do th...
@. .@
7
Could you upvote please? https://www.kaggle.com/code/mehmetisik/sentiment-analysis-twitter-nlp-machine-learning https://www.kaggle.com/code/mehmetisik/user-based-collaborati...
MHT Mht
1
всем драсте, занимаемся активно макетами печатной продукции каждый раз при закае нам шлют pdf или ai, любой вектор кароч чтоб внести заказ нужно каждый раз вручную создавать ...
Vlados
4
Карта сайта