在sql语句中转义或使用c字符串

h5qlskok  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(436)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

两年前关门了。
改进这个问题
我正在使用连接器c api连接到mysql数据库。我对在sql语句中使用c字符串的值有问题。

  1. char *somequery = "SELECT username, password from tableABC WHERE username='john'";

如果我使用一个简单的文本“john”,上面的方法就可以了。但是如果我用一个字符串(在程序的前面设置)替换它,它就不工作了,并且会出现500个错误。

  1. char *ghob = "john";
  2. char *somequery = "SELECT username, password from tableABC WHERE username=ghob";

我试过几件事,但都没用。任何帮助都将不胜感激。

dgsult0t

dgsult0t1#

sprintf()允许您将格式化数据存储为字符串。使用sprintf()可以将ghob的值存储到somequery中。
就像下面一样。

  1. # define MAX_QUERY_LENGTH 1024 //defines max possible query lengh
  2. char *somequery = malloc(sizeof(char) * MAX_QUERY_LENGTH);
  3. char *ghob = "bobmarley";
  4. sprintf(somequery, "SELECT username, password from tableABC WHERE username='%s'",ghob);

  1. char somequery[MAX_QUERY_LENGTH];
  2. char *ghob = "bobmarley";
  3. sprintf(somequery, "SELECT username, password from tableABC WHERE username='%s'",ghob);

不管怎样都可以。

  1. printf("%s", somequery);

打印somequery将导致

  1. SELECT username, password from tableABC WHERE username='bobmarley'
展开查看全部

相关问题