Евгений Петряев,
Так работают «подготовленные запросы» MySQL.
Чем они хороши.
1. СУБД преобразует SQL во внутренний код — и у одинаковых запросов с разными параметрами будет один и тот же код.
2. Штатная защита от внедрений SQL-кода. Гугли «Робин-брось-таблицу».
С точки зрения MySQL есть два вопроса — с экранированием логина и освобождением памяти.
А с тем, что mysql_fetch_row даёт false уже на первой строчке — это уже вопрос архитектуры программы.
Так что мои советы.
1а. С освобождением памяти — оберните дескрипторы MySQL в автодеструкторы. Например (из нашей внутренней библиотеки):
Евгений Петряев, Первое — это обёртка (на Си++11) над дескриптором MySQL, которая умеет:
• не копировать, только перемещать
• уничтожать объект
• инкапсулировать пару функций
Второе — это методика, как вываливать аварии, если при вызове какой-то функции случилось нехорошее.
То есть проверяем возвращаемое значение, и если оно нехорошее, получаем текст ошибки и с этим текстом выкидываем аварию.
Почему maria, кстати — одно из ответвлений MySQL (более «открытое», кстати, чем ныне принадлежащая Oracle’у СУБД) называется MariaDB. Написана тем же автором — просто его первую дочь звали Мю (он финн, потому пишется как My), вторая Мария.