Ale vždyť jsem to psal, že takto se tam obsah proměnné nedostane. Podle datového typu použiješ placeholder a ve sprintf tam naleješ hodnoty.
V příkladu té knihovny to máš.
MYSQL connector
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Re: MYSQL connector
Právě, kdybych věděl jak to tam zapsat tak se neptám...poradíš jak to tam napsat?
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.
Re: MYSQL connector
Aha, jasně:
Nejprve si připravíš "nedosazený" dotaz, něco jako statement. Tam, kam budeš chtít později dosadit textovou proměnnou, umístíš placeholder %s, tam kde
bude int, dáš placeholder %d.
Pozor na floaty, ty budeš muset konvertovat na string pomocí dtostrf() a dosadit jako %s.
Pak si připravíš nějaký buffer, kam se uloží "dosazený" dotaz.
No a teď placeholdery nahradíš hodnotami proměnných.
Co se stalo?
Do query se uložil dotaz v sql_stmt a jeho placeholdery se nahradily za reálné hodnoty. Pozor, u hodnot je důležité zachovat pořadí placeholderů.
Za první %s se dosadilo "test", za druhé %d se dosadilo 17, za poslední %s se dosadilo "col3".
A vykonám.
Do DB se poslal dotaz:
Nejprve si připravíš "nedosazený" dotaz, něco jako statement. Tam, kam budeš chtít později dosadit textovou proměnnou, umístíš placeholder %s, tam kde
bude int, dáš placeholder %d.
Pozor na floaty, ty budeš muset konvertovat na string pomocí dtostrf() a dosadit jako %s.
Kód: Vybrat vše
char sql_stmt[] = "INSERT INTO table (col1, col2, col3) VALUES ('%s',%d,'%s')";
Kód: Vybrat vše
char query[128];
Kód: Vybrat vše
sprintf(query, sql_stmt, "test", 17, "col3");
Do query se uložil dotaz v sql_stmt a jeho placeholdery se nahradily za reálné hodnoty. Pozor, u hodnot je důležité zachovat pořadí placeholderů.
Za první %s se dosadilo "test", za druhé %d se dosadilo 17, za poslední %s se dosadilo "col3".
A vykonám.
Kód: Vybrat vše
cursor->execute(query);
Kód: Vybrat vše
INSERT INTO table (col1, col2, col3) VALUES ('test',17,'col3')
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 44 hostů