Stránka 2 z 2

Re: MYSQL connector

Napsal: 11 led 2021, 18:58
od KamilV
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áš.

Re: MYSQL connector

Napsal: 12 led 2021, 06:58
od sachlj
Právě, kdybych věděl jak to tam zapsat tak se neptám...poradíš jak to tam napsat?

Re: MYSQL connector

Napsal: 12 led 2021, 14:35
od KamilV
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.

Kód: Vybrat vše

char sql_stmt[] = "INSERT INTO table (col1, col2, col3) VALUES ('%s',%d,'%s')";
Pak si připravíš nějaký buffer, kam se uloží "dosazený" dotaz.

Kód: Vybrat vše

char query[128];
No a teď placeholdery nahradíš hodnotami proměnných.

Kód: Vybrat vše

sprintf(query, sql_stmt, "test", 17, "col3");
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.

Kód: Vybrat vše

cursor->execute(query);
Do DB se poslal dotaz:

Kód: Vybrat vše

INSERT INTO table (col1, col2, col3) VALUES ('test',17,'col3')