Не удается обнаружить целочисленные значения в предложении where - PullRequest
1 голос
/ 26 апреля 2019

Я пытаюсь прочитать значения столбцов в моем массиве с помощью запросов MySQL на языке C.

for(i=1;i<=15;i++)
   {
       if (mysql_query(conn, "select numberofskills from latest.skills where id = $i")) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }
    res = mysql_use_result(conn);

     while ((row = mysql_fetch_row(res)) != NULL){
        j=0;
        arr[j].n =atoi(row[0]);
        printf("%d\n",  arr[j].n);
        j++;
   }

У меня ошибка «Неизвестный столбец« $ i »в« предложении where ». Я перепробовал всеэто, но ничего не работает.

"select numberofskills from latest.skills where id = $i"
"select numberofskills from latest.skills where id = '$i'"
"select numberofskills from latest.skills where id = i"

Ответы [ 2 ]

3 голосов
/ 26 апреля 2019

$ я не заменю значение i.Вместо этого вам следует сначала отформатировать строку, заменив в ней значение i, а затем использовать строку в запросе mysql.

В заголовочном файле или в начале программы определите следующий макрос:

#define MYSQL_QUERY_LENGTH 100

Внутри функции, в которой вы выполняете запрос, определите следующую переменную:

char string[MYSQL_QUERY_LENGTH] = {};

Внутри цикла for сначала отформатируйте строку:

snprintf(string, MYSQL_QUERY_LENGTH, "select numberofskills from latest.skills where id = %d", i);

Затем используйте строку в запросе, как показано ниже:

if (mysql_query(conn, string))

0 голосов
/ 26 апреля 2019

Сначала вам нужно создать строковую переменную запроса с функцией sprintf, в которой вы сможете правильно объединить запрос и переменную

, вот пример

mysql и c - использовать переменную в запросе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...