Я нашел решение в другом месте, благодаря помощи некоторых хороших людей.Кажется, что я сделал глупую ошибку, а также нуждался в глубоком понимании разницы между двумя функциями MYSQL C API.
Я пишу ответ здесь, в надежде, что он принесет пользу другим.
Здесь есть ошибки:
robe = mysql_fetch_row(result);
Хотя это само по себе правильно.Я не могу проверить его результат.Что происходит, когда SQL-запрос выполняется с использованием имени пользователя, которого раньше не было в БД, результатом является пустой набор (а не ошибка).
mysql_store_result и mysql_fetch_row имеют небольшую разницу здесь.Хотя первый не вернет NULL, если набор пуст, последний будет.
Все, что мне нужно сделать, это добавить проверку после строки выше с логикой:
if (robe == NULL) {
//error occured
} else { //go on
}