Не удается обнаружить целочисленные значения в предложении where

0

Я пытаюсь прочитать значения столбца в мой массив, используя 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++;
   }

У меня есть ошибка, говорящая "Неизвестный столбец" $ я "в" предложении где ". Я пробовал все это, но, похоже, ничего не работает.

"select numberofskills from latest.skills where id = $i"
"select numberofskills from latest.skills where id = '$i'"
"select numberofskills from latest.skills where id = i"
  • 1
    Забавное место для установки j = 0. Вы хотели сделать это до цикла while?
  • 0
    да исправил это.
Теги:
database

2 ответа

0
Лучший ответ

$ я не заменю значение 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

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

вот пример

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню