2016-10-07 13 views
0

私の練習がSQLインジェクションから保護するのに十分であるかどうか確認したい。 $ _GET/$でINTVAL、(トリムを使用MySQLiは文の良い練習を準備する

$result = $query->get_result(); 

などを)()など_安全性についてPOST:

$mysqli = new mysqli($host,$username,$password,$database); 
$query = $mysqli->prepare('SELECT * FROM users WHERE id = ? AND check = ?'); 
$query->bind_param('ii', $_GET['id'], $_POST['check']); 
$query->execute(); 

$result = $mysqli->query($query); 
while ($row = $result->fetch_assoc()) { 
... 
} 

私はいくつかの例ではしばらく前にこのラインを持っていることを見てきました。 SQLインジェクションを避けるベストプラクティスと安全な方法はどれですか?声明の練習を用意し

+0

サイドノート: '_ _で$ _GET/$ _ POST'にする必要があります。 – Albzi

+1

[PHPでSQLインジェクションを防止するにはどうすればいいですか?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – Naruto

答えて

0

最高 MySQLiをあなたは上記の投稿のコードだけでは意味がありません明らかに

PDO準備されたステートメントです。実際には、get_result()関数を使用する必要があります。 - is not guaranteed to be available

$query = $mysqli->prepare('SELECT * FROM users WHERE id = ? AND check = ?'); 
$query->bind_param('ii', $_GET['id'], $_POST['check']); 
$query->execute(); 
$result = $query->get_result(); 
while ($row = $result->fetch_assoc()) { 
... 
} 

PDOであなたは常に他のPDOの素晴らしい機能

とトリムを使用して他の人はもちろんのこと

$query = $pdo->prepare('SELECT * FROM users WHERE id = ? AND check = ?'); 
$query->execute([$_GET['id'], $_POST['check']]); 
while ($row = $query->fetch()) { 
... 
} 

を動作することが保証されて2倍以下のコードを必要としながら、 ()、intval()など

これらのthあなたは他の何らかの理由でそれらを使うかもしれません。

関連する問題