WordPress, как вывести сумму из столбца таблицы MySQL по user id и type_operation

Вопрос или проблема

У меня есть таблица с фондами аккаунта в базе данных WordPress. Структура такая:

Id           user_id         fund_user        type_operation
-----------------------------------------------------------
1             1379               100              admin_op
2             1565               500              admin_op
3             1379              -50               pay
4             1379               200              admin_op
5             1616              -150              pay

И на моей странице WordPress я хочу отобразить следующее:

Только admin_op текущего вошедшего пользователя в type_operation, ПОЛУЧИТЬ ИТОГО только положительные значения fund_user.

У меня есть это:

global $wpdb; 
$result_good = $wpdb->get_results("Select sum(fund_user) as good_points from wp_ywf_user_fund_log where type_operation='admin_op'");

        $haha= "Total Points for Good =".$result_good['good_points'];
        echo $haha;
        return $haha;

но это ничего не возвращает, и я не могу отредактировать это для моего конкретного запроса.

Как я могу получить и вывести в этой таблице для текущего пользователя, значение Общего fund_user для определенного type_operation?
Спасибо за все ответы.

Если выполнение операции в SQL-запросе не является строго необходимым, я предпочел бы выполнить ее с массивом данных admin_op, например: op_sum = get_results( Select fund_user FROM table WHERE type_operation = admin_op ); затем var = array_sum(op_sum);

Ответ или решение

Теория:

Чтобы извлечь и отобразить сумму значений из столбца в таблице MySQL на основе условий, в данном случае фильтрация по user_id и type_operation, необходимо использовать правильный SQL-запрос и корректно обрабатывать результаты в PHP. WordPress предоставляет встроенные функции, такие как $wpdb, которые помогают взаимодействовать с базой данных безопасно и удобно. Когда задача стоит в том, чтобы отфильтровать по текущему пользователю и типу операции, важно учесть, что условие фильтрации по положительным значениям также может быть включено в SQL-запрос.

Пример:

Ваша таблица имеет следующую структуру:

Id           user_id         fund_user        type_operation
-----------------------------------------------------------
1             1379               100              admin_op
2             1565               500              admin_op
3             1379              -50               pay
4             1379               200              admin_op
5             1616              -150              pay

Необходимо отобразить сумму fund_user для текущего пользователя, фильтруя только по типу операции admin_op и положительным значениям. Для выполнения этой задачи можем использовать следующий SQL-запрос:

global $wpdb;

// Получаем текущего пользователя
$current_user_id = get_current_user_id();

// Выполняем SQL-запрос для получения суммы
$total_points = $wpdb->get_var($wpdb->prepare("
    SELECT SUM(fund_user) 
    FROM wp_ywf_user_fund_log 
    WHERE user_id = %d 
    AND type_operation = 'admin_op' 
    AND fund_user > 0
", $current_user_id));

// Отображаем результат
echo "Общая сумма для текущего пользователя: " . $total_points;

Применение:

  1. Понимание SQL-запроса: Здесь используется функция get_var(), которая возвращает одно значение из базы данных. Мы фильтруем строки, где type_operation равно admin_op и значение в столбце fund_user больше нуля, чтобы исключить отрицательные значения при добавлении.

  2. WordPress и безопасность: Метод prepare() защищает вашу базу данных от SQL-инъекций, так как он корректно экранирует переменные, добавляемые в запрос.

  3. Аутентификация: Использование функции get_current_user_id() гарантирует, что данные будут считаться только для залогиненного пользователя, что соответствует требованиям задачи.

Таким образом, легкий доступ к данным и их обработка с использованием встроенных возможностей WordPress позволяет создать надежное и безопасное решение. Это важно при работе с важными финансовыми данными и при предоставлении персонализированного контента для пользователей вашего сайта.

Оцените материал
Добавить комментарий

Капча загружается...