2016-08-04 103 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