2017-06-30 54 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

謝謝,這是完美的。我現在知道了。將盡快接受 –