2017-09-05 189 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