2017-06-30 24 views
2

自从我做了任何MySQL并且我一直在学习一些有关PDO的知识之后,它一直是AGES。我只是想知道这是否是正确的做事方式?这个MySQL语句注入是否安全?

在此先感谢!

$sql = 'SELECT `something`,`somethingelse` FROM here WHERE id = \'' . $_REQUEST["id"] . '\''; 
$stmt = $db->prepare($sql); 
$stmt->execute(); 
+1

那么如果'$ _REQUEST [“id”]'包含例如'1'或'1'='1',那么您的查询就是'SELECT something,somethingelse FROM here WHERE id ='1'或'1'='1'',所以不是不安全。 –

回答

4

不,不要将变量直接添加到查询字符串中。这是实现它的安全方式。这lookls像PDO查询,所以这里是如何替换值成PDO查询

$sql = 'SELECT `something`,`somethingelse` FROM here WHERE id = ?'; 
$stmt = $db->prepare($sql); 
$stmt->execute(array($_REQUEST["id"])); 

,或者你可以再稍微缩短这样做节省了时间:

$stmt->execute([$_REQUEST['id']]) 

您可以阅读如果在这里运行查询,那么请稍微介绍一下https://yomotherboard.com/sql-prepared-statements-using-php-pdo-queres/

+1

谢谢,这是完美的。我现在知道了。将尽快接受 –