C ++ Mysql Real Escape String Проблема - PullRequest
0 голосов
/ 10 июля 2010

Хм, почему-то, он делает это только с первым именем пользователя (и паролем) и делает это для того, насколько велик мой вектор. Есть идеи почему?

int eMysql::strip(string &input) {
    char* from = new char[strlen(input.c_str()) * 3 + 1];
    mysql_real_escape_string(&mysql, from, input.c_str(), input.length());
    input = input.assign(from);
    delete from;
}

Где его использовали:

if(query.size() > 0) {
        mysql->strip(query[0]);
        mysql->strip(query[1]);
        mysql->query("SELECT `username` FROM `users` where `username` = '"+ query[0] +"';");

1 Ответ

1 голос
/ 10 июля 2010

Я предлагаю строить запрос как отдельную строковую переменную, а не передавать беспорядок в аргументе:

static const char fixed_text[] = "SELECT `username` FROM `users` where `username` = '";
std::string query_text(fixed_text);
query_text += query[0];
query_text += "';";
mysql->query(query_text);

Этот метод позволяет вам проверить запрос перед его отправкой в ​​MySql.

Я предлагаю вам изучить переменную query[0] на наличие каких-либо странных символов, таких как \r и \n.В руководстве MySql есть раздел, в котором перечислены символы, которые необходимо экранировать.

...