2017-10-03 5 views
0

私は$_GET[]を使用してURLから一意のID番号を取得し、その一意のIDと一致するすべての行を表示しています。私は$_GET[]を使用した後、ORDER BYを使用することを許可しないので、彼はすべての行を表示しますが、今は別の列名でそれをどのようにcorectly順番に並べているのですか?私は今issue_number列でそれを注文したい

$query = 'SELECT * FROM magazine WHERE issue_number = ' . $_GET['unique_issue_id']; 

を次のように私のクエリのコードがあります。事前に

おかげ

+2

**危険** ** [SQLインジェクション攻撃](http://bobby-tables.com/)に脆弱** ** [防御]する必要があります(http://stackoverflow.com/あなた自身から/ 60174/best-way-to-prevent-sql-injection-in-php) – Quentin

答えて

0
$query = 'SELECT * FROM magazine WHERE issue_number = ' . $_GET['unique_issue_id'] . ' ORDER BY issue_number'; 

はちょうどそれを使用する前にGETパラメータを逃れるために覚えているが、これは動作するはずです。あなたが使用しているSQLはわかりませんが、ここでは考慮すべきいくつかのアイデアがあります。

Prepared Statements

MySql Escape

Mysqli Escape

+1

**危険**:[防御](http://stackoverflow.com/questions/)が必要な[SQLインジェクション攻撃](http://bobby-tables.com/)**に対する脆弱性**です。 60174/best-way-to-prevent-sql-injection-in-php)をご利用ください。 – Quentin

+0

ありがとう、今夜は眠れます。再びありがとう... –

0

潜在的なSQLインジェクションから安全に自分自身を維持するためにmysqli_prepare機能を使用してください。

//prepare the query 
    $stmt = $mysqli->prepare("SELECT * FROM magazine WHERE issue_number=? order by issue_number")); 
    $stmt->bind_param("s", $_GET['unique_issue_id']) 

    //Execute the query 
    $stmt->execute(); 

    //Loop through the results 
    $result = $stmt->get_result(); 
    while ($myrow = $result->fetch_assoc()) { 
    //Do stuff here 
    } 

このようにしないと、アプリケーションが脆弱になることがあります。がんばろう!

関連する問題