如何在mysql_query中传递变量
问题描述:
我尝试执行mysql查询传递变量。这里是我的代码如何在mysql_query中传递变量
char str[100] = "My String";
mysql_query(conn, printf("INSERT INTO table VALUES %s"), str);
我得到在编译过程
warning: passing argument 2 of ‘mysql_query’ makes pointer from integer without a cast
警告我错过了什么?
答
你不能这样做,printf()
返回打印的字符数你有打电话mysql_query()
之前创建的字符串:。
char statement[512], *my_str = "MyString";
snprintf(statement, 512, "INSERT INTO table VALUES ('%s')", str);
mysql_query(conn, statement);
此外,在创建的查询字符串时一定要小心,不要使用功能,如sprintf()
如果你不能确定生成的字符串有多长。不要写OVE r内存段的边界。
答
你应该把“'在前面和后面的字符串 这样
mysql_query(conn, printf("INSERT INTO table VALUES ('%s')"), str);
答
扩展@ ckruse的答案,如果字符串来自任意来源,则应该注意使用。
int insert_data(MYSQL * mysql, char * str, int len)
{
if (len < 0) {
len = strlen(str);
}
char esc[2*len+1];
unsigned long esclen = mysql_real_escape_string(mysql, esc, str, len);
char statement[512];
snprintf(statement, sizeof statement, "INSERT INTO table VALUES ('%s')", esc);
return mysql_query(mysql, statement);
}
(另一种可能是mysql_hex_string()
如果正确处理。)
ITYM`焦炭语句[512],`... – glglgl 2011-12-16 09:20:41