Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 20:08   #1
mysan
 
Аватар для mysan
 
Регистрация: 20.01.2010
Сообщений: 9
Вопрос Как вписывать переменные в mysql_query на C++

На php все просто '".$omg."'

а в C++ уже так не хочет.... пишет ошибку

при ' ' тоже ошибка

при нету ошибки, но в базу вписывает просто напросто переменную.

Итак есть :


printf("%s", str+5);
printf("%s", inet_ntoa(adr.sin_addr));

ну и по этому я уже делаю так :

mysql_query(db, "SELECT * FROM `mp` WHERE `ip` = inet_ntoa(adr.sin_addr) AND port = str+5");

но это как я понял не верное решение....

как тогда бить ?


Заранеее спасибо !
mysan вне форума Ответить с цитированием
Старый 20.01.2010, 20:22   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Хм, мне кажется, вы напутали с кавычками.
Код:
string query = "SELECT * FROM mp WHERE ip = ";
query += (string)inet_ntoa(adr.sin_addr);
query += " AND port = ";
query += string(str+5);
//и затем делаете запрос
mysql_query(db, query.c_str());
Вобщем, суть такова - вы строите строку запроса, приклеивая к ней нужные значения, а потом просто вставляете в функцию.

Последний раз редактировалось MaTBeu; 20.01.2010 в 20:26.
MaTBeu вне форума Ответить с цитированием
Старый 20.01.2010, 20:45   #3
mysan
 
Аватар для mysan
 
Регистрация: 20.01.2010
Сообщений: 9
Хорошо

Спасибо большое.

Простите за тупой вопрос... , а если использовать INSERT.

Как тут бить с синтаксисом ?

mysql_query(db, "INSERT INTO `mp` ( `id` , `ip` , `port` , `login` , `pass` , `ban` ) VALUES ('', 'inet_ntoa(adr.sin_addr)', 'str+5', 'ya', '123456', '0')");
mysan вне форума Ответить с цитированием
Старый 20.01.2010, 22:18   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Так же.
формируете строку
Код:
string query = "INSERT INTO ";
query += mp;
query += " ( ";
query += id;
query += ", ";
...
//и так далее до конца.
Вообще, я не помню, будет ли такое работать, но попробуйте вот так
Код:
string query = "INSERT INTO "+mp+" ( "+id+", "+ip+...+ban+" ) VALUES ( "+...+" )";
Вместо троеточий вставляете свои переменные.

Последний раз редактировалось MaTBeu; 20.01.2010 в 22:20.
MaTBeu вне форума Ответить с цитированием
Старый 20.01.2010, 23:29   #5
mysan
 
Аватар для mysan
 
Регистрация: 20.01.2010
Сообщений: 9
Смущение

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Вообще, я не помню, будет ли такое работать, но попробуйте вот так
Код:
string query = "INSERT INTO "+mp+" ( "+id+", "+ip+...+ban+" ) VALUES ( "+...+" )";
Вместо троеточий вставляете свои переменные.
так не хочит.... оно принимает

mp,id,ip,ban за идентификаторы...

пробовал писать просто

INSERT INTO mp ( ip,port )

но теперь жалуется и на VALUES , где я делал так:

VALUES ("+inet_ntoa(adr.sin_addr),str+5 +") ( 2 раза +: невозможно добавить два указателя)

или даже так

VALUES ("+inet_ntoa(adr.sin_addr)+","+str+ 5+") (1 раз +: невозможно добавить два указателя)

всеравно не хочет

а первый способ немного запутаный... надо все разрезать на части и т.д...
mysan вне форума Ответить с цитированием
Старый 20.01.2010, 23:45   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Ну тогда вам += нада делать и клеить строку таким образом.
MaTBeu вне форума Ответить с цитированием
Старый 21.01.2010, 01:01   #7
mysan
 
Аватар для mysan
 
Регистрация: 20.01.2010
Сообщений: 9
По умолчанию

Фуххх....

все-таки вы были правы

И благодаря еще вот этой статейке http://www.cplusplus.com/forum/general/14633/

я наконецто понял как это делать !

Вот что получилось:

string sql;
sql ="INSERT INTO mp (id, ip, ban, port) VALUES ('','";
sql +=inet_ntoa(adr.sin_addr);
sql += "','0','";
sql += string(str+5);
sql += "')";

Странно однако все это выглядит, можно было же проще сделать создателям C++ и MySQL этот синтакс . Ну есть уже как есть .

И главное все добавляется (в базе появилось 5 моих ip адресов).
mysan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перечислить переменные? Алексей11111 Microsoft Office Excel 0 19.11.2009 08:07
Как вписывать в ячейки текст. Extez1 Общие вопросы Delphi 1 18.04.2009 14:22
mysql_result и mysql_query smoke888 PHP 6 13.07.2008 16:09
как разделить текст на переменные GAGARIN-NEW Общие вопросы Delphi 2 07.10.2007 15:24
Как вписывать объекты в свои процедуры? schveine Помощь студентам 4 02.10.2007 13:46