如何将字符串作为查询的参数传递

时间:2019-05-19 12:15:39

标签: mysql c

我有一个变量Name,它将从cmd/terminal接收一个值,我正试图将此变量作为参数传递给查询命令。

我已经尝试过这些: '"+Name+"', :Name, @Name, +Name, DESCRIBE, #define @Name, Values(%s),Name),...

C代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <my_global.h>
#include <mysql.h>

void finish_with_error(MYSQL *con)
{
  fprintf(stderr, "%s\n", mysql_error(con));
  mysql_close(con);
  exit(1);        
}
int main()
{ 
    printf("Enter a name ");

    int n = 0;
    char c;

    char *Name = NULL;

    do
    {
        Name = (char*)realloc(Name, (++n) * sizeof(char));
        Name[n-1] = (c = getchar()) == '\n' ? '\0' : c;

    }while(c != '\n');

    MYSQL *con = mysql_init(NULL);

    if (con == NULL)
    {
        fprintf(stderr, "%s\n", mysql_error(con));
        exit(1);
    }

    if (mysql_real_connect(con, "localhost", "root", "YES", "Users", 0, NULL, 0) == NULL)
    {
        finish_with_error(con);
    }

    /*I WANNA PASS THE VARIABLE Name TO THIS QUERY -> VALUES(NAME)*/
    if (mysql_query(con, "INSERT INTO Personal_info (First_name) VALUES()")); 
    {
        finish_with_error(con);
    }

    return 0;

我想在查询命令中输入该变量的值。

对于我尝试过的所有代码,我都会收到相同的错误消息:

syntax error

1 个答案:

答案 0 :(得分:0)

如何?

snprintf(buf,sizeof(buf),"INSERT INTO Personal_info (First_name) VALUES(%s)",Name);
if(mysql_query(con, buf))

警告:就在我头上,没有经过实际编译和测试!