我无法使用下面的代码。它使用的是普通的select或insert,但是当我尝试向它插入一个变量时,它没有工作。有人能告诉我这里出了什么事吗?
请注意,输出如下。

int main(int argc, char **argv)
{

  MYSQL *conn;
  char str[100] = "test";
  conn = mysql_init(NULL);

  char stmt_buf[100];
  sprintf (stmt_buf, "insert into test values ('%s')", str);

  printf("\n%s\n",stmt_buf);

  mysql_query (conn, stmt_buf);
  mysql_close(conn);
  return 0;
}

~$./version
insert into test values ('test')
Segmentation fault

最佳答案

我没看到你通过mysql_real_connect连接到数据库
也没有mysql_select_dbmysql_exec_sql呼叫。
这是给你的一个例子。

int main(int argc, char **argv)
{
    MYSQL mysql;
    char stmt_buf[100];
    if (mysql_init(&mysql) == NULL) {
        printf("Can not initialize");
        exit(1);
    }
    if (!mysql_real_connect
        (&mysql, "localhost", "USERNAME", "PASSWORD", NULL, 0, NULL, 0)) {
        mysql_error(&mysql);
        exit(1);
    }

    if (mysql_select_db(&mysql, "DATABASENAME")) {
        mysql_error(&mysql);
        exit(1);
    }

    sprintf(stmt_buf, "insert into test values ('%s')", "test");

    if (mysql_exec_sql(&mysql, stmt_buf))
        mysql_error(&mysql));

    mysql_close(&mysql);
}

关于mysql - C语言中的MYSQL API-Linux,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9446681/

10-11 14:37