2011-08-05 127 views
1

我想知道是否應該在準備他們的查詢時多加努力。準備查詢

例如,一個查詢,它接受用戶輸入以在數據庫上發出請求。

if(is_int($id)) { 
    $mysqli->query("SELECT * FROM myTable WHERE id = '$id'"); 
} 

VS

if(is_int($id)) { 
    $mysqli->query(sprintf("SELECT * FROM myTable WHERE id = '%d'",$id)); 
} 
+1

只需使用預準備語句(PDO,在PHP世界中)並停止擔心SQL注入。 –

+0

我會從Get Go中使用PDO,但我使用的Wordpress已經附帶了它自己的數據庫類。可悲的是我需要準備「一些」查詢。 – Anraiki

+0

這些例子都是安全的,因爲你檢查'$ id'是一個整數tho,如果它不是,那麼'if'將被傳遞...下一部分會拋出錯誤嗎? –

回答

1

有三種方法來避免SQL注入:逃脫,準備和打字。你的例子使用了鍵入:它確保你的變量是一個整數,因此是安全的。你不需要需要準備這個聲明,因爲你永遠不會遇到SQL注入這個特定的一段代碼。