Я пишу программу на C для доступа к базе данных.
Я недавно переключился с sqlite на mysql.
Я не знаком с mysql c api, поэтому мне нужна помощь в преобразовании кода.
Ниже приведен пример выполнения оператора sql с параметром.
SQLite:
char *zSQL = sqlite3_mprintf("SELECT price FROM warehouse WHERE p_ID='%q'", input_value);
sqlite3_prepare_v2(handle,zSQL,-1,&stmt,0);
моя попытка в mysql:
char zSQL[60] = {'\0'};
int n = 0;
n = sprintf(zSQL, "SELECT price FROM warehouse WHERE p_ID='%s'", input_value);
mysql_real_query(conn, zSQL, n);
Другим примером является анализ результата оператора sql в переменную
SQLite:
double price_value = 0;
if (sqlite3_step (stmt) == SQLITE_ROW) {
price_value = sqlite3_column_double (stmt, 0);
}
MySQL:
MYSQL_ROW row;
while ((row = mysql_fetch_row(result)))
{
price_value = atof(row[0]);
}
Хотя код в MySQL работает для меня, но я чувствую, что недостаточно использую API.
Есть ли в mysql c api какая-либо функция, имеющая такую же функциональность, как sqlite3_mprintf()
и sqlite3_column_double()
?
Edit:
Моя попытка mysql_real_escape_string()
:
ulong in_length = strlen(input_value);
char input_esc[(2 * in_length)+1];
mysql_real_escape_string(conn, input_esc, input_value, in_length);
char sql_stmnt[56] = {'\0'};
n = sprintf(zSQL, "SELECT price FROM warehouse WHERE p_ID='%s'", input_esc);
mysql_real_query(conn, sql_stmnt, n);