2014-02-22 53 views
0

我有一個頁面,收集許多數據,我需要逃避這些數據之前做一個SQL查詢插入數據庫。使用foreach和mysqli_real_escape_string很多帖子值

我的SQL查詢之前寫:

foreach($_POST as $k => $v) $_POST[$k] = mysqli_real_escape_string($conn,$v); 

我的$ conn是:

$conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz'); 

仍然可以工作,但我不知道這是否是安全的。

+1

這應該沒問題,但是如果使用參數化查詢,會更好。 – Barmar

回答

2

這是極其錯誤的方式處理POST變量。 錯誤的方式很多。

當然這是不安全的。

取決於您要在查詢中使用POST數據的方式,此代碼可能會被更正或可能無法使用且不安全。

正如Barmar所說的,你應該使用準備好的語句。如果您也有插入數據的準備語句,那更好。

+0

我喜歡你的名字是什麼你的常識:-) – Sekai

+0

你能解釋一下嗎,怎麼會不安全? – CodeBird

+0

有很多方法可以在這裏列出它們。嚴格地說,你喜歡使用的函數**與任何安全性絕對沒有關係。** –

0

這應該是安全的。

$query=$conn->prepare("select * from yourtable where colum= ? and column2 = ? "); 
$query->bind_param('ss', $_POST['var1'],$_POST['var2']); 
-2

試試這個

$conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz'); 

$ARR_DATA = array(); 
foreach($_POST as $k => $v) 
{ 
    $ARR_DATA[$k] = mysqli_real_escape_string($conn,$v); // store your escaped value in $ARR_DATA 
} 

現在你可以使用,而不是使用$_POST,無論你想$ARR_DATA值。

+2

請不要張貼危險的注射代碼,謝謝。 –

+0

它有什麼危險? –

+0

請您參考關於該主題的其他答案,該答案已經多次被回答和討論過,謝謝。 –