【发布时间】:2017-04-06 18:12:28
【问题描述】:
我正在使用 MariaDB C-connector API 在 C 中创建一个函数,以允许用户输入新的用户名和密码并将它们存储在 MariaDB/MySQL 数据库中。我使用 strcpy_s() 和 strcat_s() 在缓冲区内将多个字符串连接在一起,以便生成 MariaDB/MySQL 查询以将信息放入数据库中。这会导致“字段列表中的未知列”错误。在我使用“foo”和“bar”作为预设字符串实现函数之前,我在这里问过一个类似的问题,我收到的答案(有效)是将“foo”和“bar”更改为“'foo '" 和 "'bar'"。这行得通。有没有办法在运行时以“'foo'”形式而不是“foo”形式从用户那里获取字符串?下面是函数的相关代码。
void NEW_PLAYER(MYSQL *con)
{
char NAME[16];
char PASSWORD[16];
char ch = NULL;
unsigned int i = 0;
printf("New Username: ");
while (ch != '\n') // terminates when the user presses enter
{
ch = getchar();
NAME[i] = ch;
i++;
}
NAME[i] = '\0';
i = 0;
ch = NULL;
printf("New Password: ");
while (ch != '\n') // terminates if user hits enter
{
ch = getchar();
PASSWORD[i] = ch;
i++;
}
PASSWORD[i] = '\0';
printf("%s", NAME);
printf("%s", PASSWORD);
char TEMP[256];
char str1[] = "INSERT INTO PLAYERS VALUES(";
strcpy_s(TEMP, str1); strcat_s(TEMP, NAME);
strcat_s(TEMP, ", ");
strcat_s(TEMP, PASSWORD);
strcat_s(TEMP, " ,0, 0, 0, 1)");
if (mysql_query(con, TEMP)) {
fprintf(stderr, "%s\n", mysql_error(con));
exit(-1);
}
}
【问题讨论】:
标签: mysql c database string mariadb