Problem z funkcją mysql_query
Ostatnio zmodyfikowano 2013-04-04 18:37
kubek3898 Temat założony przez niniejszego użytkownika |
Problem z funkcją mysql_query » 2013-04-04 14:54:33 Krótko i na temat. Potrzebuję zapisać do bazy zawartość zmiennej string tmp;. Jak to zrobić za pomocą funkcji mysql_query? W PHP był lajt wystarczyło dać operator łączenia ciągów, ale w C++? Próbowałem dać %s, a jako dodatkowy parametr zmienną tmp, jednak wyrzuca błąd (zbyt duża liczba parametrów).
Proszę o pomoc. |
|
xevuel |
» 2013-04-04 15:33:10 std::string tmp = "foo"; char * buf = new char[ rozmiar_bufora ]; sprintf( buf, "INSERT INTO tabela VALUES ('%s')", tmp.c_str() ); mysql_query( mysql, buf ); delete[] buf;
Najważniejsza część kodu to funkcja sprintf. |
|
m4tx |
» 2013-04-04 15:47:00 Można też inaczej. Za pomocą strcat lub operatora + w std::string (chyba najbardziej czytelne rozwiązanie). |
|
kubek3898 Temat założony przez niniejszego użytkownika |
» 2013-04-04 15:53:58 Dziękuje Wam obydwóm za pomoc, o to mi chodziło, oczywiście działa.
/cl |
|
kubek3898 Temat założony przez niniejszego użytkownika |
» 2013-04-04 18:37:02 Otworzę znów ten temat, bo nie ma sensu zakładać nowego... otwieram plik log.log: file.open( "log.log", ios::in ); , a później pobieram wiersze: string tmp; while( !file.eof() ) { getline( file, tmp ); cout << tmp << endl; } jednak przy zapisywaniu do bazy: char * query = new char[ 1024 ]; sprintf( query, "INSERT INTO logs (`logs_txt`) VALUES ('%s');", tmp.c_str() ); mysql_query( connect, query ); delete[] query; program się uruchamia, zapytanie na pewno się wykonuje, bo nowy rekord się tworzy, ale z pustą komórką logs_txt. Tabelę mam tak utworzoną CREATE TABLE `logs_txt` ( `id` INT NOT NULL AUTO_INCREMENT, `logs` TEXT NOT NULL, PRIMARY KEY(`id`) ) ENGINE=MYISAM Podejrzewam, że problem leży nie w programie ale w samej definicji tabeli, ponieważ, gdy wypiszę cout << tmp; to działa dobrze... Może ktoś wie, jak to rozwiązać? |
|
« 1 » |