Обычно вы вызываете mysql_store_result () или mysql_use_result () для доступа к результирующему набору: первый загружает все строки в память на стороне клиента, а второй обращается к строкам по одному с сервера за раз. Если вы используете mysql_use_result (), вам нужно вызвать mysql_fetch_row () для доступа к каждой строке, пока функция не вернет NULL. Каждый успешный вызов mysql_fetch_row () будет возвращать MYSQL_ROW, который вы можете использовать для доступа к значениям отдельных полей.
Поскольку поля не заканчиваются нулем, вам нужно использовать mysql_fetch_lengths (), чтобы получить длины каждого из полей, чтобы вы могли скопировать их в другое место через memcpy и т. Д.
Поскольку значения полей не заканчиваются на нуль, вам нужно будет добавить свой собственный NUL-символ при создании копии, если вы хотите использовать его в качестве строки. Помните, что значения полей могут содержать двоичные данные, поэтому, если вы обрабатываете их как строку, функции, ожидающие, что строка C прекратит обработку данных, если в данных встретится нуль-символ.
Вот пример из документации, которая должна помочь вам собрать все это вместе:
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
}
printf("\n");
}