2016-08-04 41 views
0

我使用下面的語法來插入一些到我的SQL表:

$db = @mysqli_connect("", "", "") or die("connection failed!"); 
mysqli_select_db($db,''); 
$user_stuff; 
$sql = "INSERT INTO whatever (...) VALUES (... '$user_stuff')"; 
$db->query($sql); 
mysqli_close($db); 

這是保存對SQL注入?我不確定如何使用這種語法在這裏使用準備語句?或者這些準備好的陳述已經在->query(...)內實施?

+0

是否已經閱讀了手冊?無論如何,它對SQL注入並不安全,因爲你沒有對用戶輸入做任何事情。使用準備好的聲明,最好是PDO。 – Janno

+1

很好的參考: http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Carr

+0

它不是關於查詢()方法。這是關於你放入它的查詢以及你如何構建查詢。 ($ sql變量) – Clemenz

回答

-2
$stmt = $db->prepare($sql); 
$stmt->execute(); 
$result = $stmt->get_result(); 
... 
$row = $result->fetch_assoc(); 
$result->close(); 
mysqli_close($db); 

好,很容易;-) ...

+2

如果$ sql變量是使用串聯和你沒有清理用戶輸入,你在這裏什麼都沒做。這不是關於使用或不使用prepare()方法,而是要了解用戶提供的輸入可能會改變查詢的含義。 – Pred