executeQuery_select

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

executeQuery_select

Сообщение ya »

Если вы хотите создать структуру данных, где ключи - это целые числа, а значения - это ассоциативные массивы (например, std::unordered_map<std::string, std::string>), вы можете использовать std::unordered_map<int, std::unordered_map<std::string, std::string>>

Код: Выделить всё

#include <iostream>
#include <unordered_map>
#include <string>
#include <mysql/mysql.h> // Не забудьте подключить библиотеку MySQL

void executeQuery_select(const char* query, std::unordered_map<int, std::unordered_map<std::string, std::string>>& data) {
    if (mysql_query(conn, query)) {
        std::cerr << "QUERY FAILED: " << mysql_error(conn) << std::endl;
    } else {
        MYSQL_RES *res = mysql_store_result(conn);
        if (res) {
            MYSQL_ROW row;
            unsigned int num_fields = mysql_num_fields(res);
            MYSQL_FIELD *fields = mysql_fetch_fields(res); // Получаем метаданные колонок
            int row_index = 0; // Индекс для каждого ряда

            while ((row = mysql_fetch_row(res))) {
                std::unordered_map<std::string, std::string> row_map;
                for (unsigned int i = 0; i < num_fields; i++) {
                    if (row[i]) {
                        row_map[fields[i].name] = row[i];
                    } else {
                        row_map[fields[i].name] = "NULL";
                    }
                }

                // Добавляем ассоциативный массив в основной map по индексу
                data[row_index] = row_map;
                row_index++; // Увеличиваем индекс для следующей строки
            }
            mysql_free_result(res);
        }
    }
}
Эта структура позволит вам обращаться к данным по индексу строки и получать поля строки через ассоциативные массивы. Например, вы можете получить значение поля, используя следующий синтаксис:

Код: Выделить всё

std::string value = data[0]["column_name"]; // Получение значения из первой строки для поля "column_name"
Ответить