2017-09-05 191 views
-1

我目前正在重新编写代码,并且有很多查询用全局变量编写,但我注意到其中一些查询只使用了一次。我假设第二种方法对于这些查询会更好。我是对的?另外第二种方法使用更少的内存或没有区别?在全局变量中声明查询

当前方法(使用全局变量):

char g_query[] = "SELECT %s FROM %s WHERE %s >= %i"; 
void func() 
{ 
    printf(g_query, "name", "table", "something", 1); 
} 

第二种方法(不使用全局变量):

void func() 
{ 
    printf("SELECT %s FROM %s WHERE %s >= %i", "name", "table", "something", 1); 
} 
+0

看看大会。根据使用情况,优化器以及您优化代码的多少,您可以获得相同的结果。 – NathanOliver

回答

2

他们都是很调皮。我们不再在代码中嵌入这样的查询。

改用参数化查询或存储过程。

否则,您很容易受到SQL注入攻击和其他问题的攻击。

至于速度,瓶颈将在数据获取,更不用说在printf调用字符串的时尚。不要让使用全局变量的性能方面影响您的设计决策。

参考:https://en.wikipedia.org/wiki/SQL_injection

+0

我知道SQL注入,这只是一个简单的例子,但感谢您解释这一点。 – exexe