Я использую API-интерфейс Connector C для подключения к базе данных mysql. У меня проблема с использованием значения строки ac в инструкции sql.
char *somequery = "SELECT username, password from tableABC WHERE username='john'";
Вышеуказанное работает отлично, если я пользователь простой текст "john". Но если я заменил его на строку (которая установлена ранее в программе), она не работает и разбивается с ошибкой 500.
char *ghob = "john";
char *somequery = "SELECT username, password from tableABC WHERE username=ghob";
Я пробовал несколько вещей, но безуспешно. Любая помощь будет оценена по достоинству.
sprintf() позволяет хранить форматированные данные в виде строки. Используя sprintf(), вы можете сохранить значение ghob в somequery.
Как показано ниже.
#define MAX_QUERY_LENGTH 1024 //defines max possible query lengh
char *somequery = malloc(sizeof(char) * MAX_QUERY_LENGTH);
char *ghob = "bobmarley";
sprintf(somequery, "SELECT username, password from tableABC WHERE username='%s'",ghob);
Или же
char somequery[MAX_QUERY_LENGTH];
char *ghob = "bobmarley";
sprintf(somequery, "SELECT username, password from tableABC WHERE username='%s'",ghob);
В любом случае все должно быть хорошо.
printf("%s", somequery);
печать somequery приведет к
SELECT username, password from tableABC WHERE username='bobmarley'