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

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

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

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

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

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

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

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

dgsult0t

dgsult0t1#

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


# define MAX_QUERY_LENGTH 1024 //defines max possible query lengh

char *somequery = malloc(sizeof(char) * MAX_QUERY_LENGTH);
char *ghob = "bobmarley";
sprintf(somequery, "SELECT username, password from tableABC WHERE username='%s'",ghob);

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

不管怎样都可以。

printf("%s", somequery);

打印somequery将导致

SELECT username, password from tableABC WHERE username='bobmarley'

相关问题