Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z funkcją mysql_query

Ostatnio zmodyfikowano 2013-04-04 18:37
Autor Wiadomość
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.
P-79919
xevuel
» 2013-04-04 15:33:10
C/C++
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 » standard Csprintf.
P-79922
m4tx
» 2013-04-04 15:47:00
Można też inaczej. Za pomocą » standard Cstrcat lub operatora + w std::string (chyba najbardziej czytelne rozwiązanie).
P-79926
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
P-79929
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:

C/C++
string tmp;
while( !file.eof() )
{
    getline( file, tmp );
    cout << tmp << endl;
}

jednak przy zapisywaniu do bazy:

C/C++
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ć?
P-79944
« 1 »
  Strona 1 z 1