2011-10-27 5 views
0

私は標準のmysql_real_escape_string()を使用していました。そして、それは安全なだったが、PDOはそう下記のスクリプトのこの種を使用してより優れたセキュリティを作ることも言われた言われた:PDOステートメントの作成

コード:

<?php 
    $db = new PDO('mysql:host=hostname;dbname=defaultDbName', 
      'username', 'password', 
      array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 

    $query = 'SELECT * FROM my_table WHERE title = :title'; 

    $stmt = $db->prepare($query); 
    $stmt->bindValue(':title', $myTitle); 
    $stmt->execute(); 

    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    // ... 
    } 
    ?> 

私の質問:

は、私は$を使用する必要がありますかdbを使用する代わりに、include( "config.php");私は標準形式で設定ファイルを使用できますか?

上記のクエリを使用して行をエコーする方法はありますか?私は$ something = $ row ['title']に単純にしますか? while {}内には

そして、私はこれを正しくしていますか?

+1

あなたは知っている、何もそれ自体では安全ではありません。あなたが使用している関数ではなく、知識だけでコードを安全にします。 –

+0

あなたは私を混乱させています。私はPDOがもっと安全だと言った人々に何かを語った。しかし、彼らはmysql_real_escape_string()の他のことがあるという声明を出しました。キャプチャすることはできませんし、PDOは自動的にそれを行います... – AAA

+1

自動的に? 'mysql_real_escape_string();'を '$ stmt-> bindValue'に変更しました。それで全部です。 –

答えて

0

:titleのように)SQLにプレースホルダを使用してPDOまたは他のAPIを使用するかどうかは、任意の数のSQLインジェクション攻撃を停止します。

はい、$ row {'columnname']または$ row [1]は各列の値を取得します。

+1

任意の数字ですか?ユーザー入力に基づいてテーブルを並べ替える必要がある場合はどうすればよいですか? –

+0

これはSQLインジェクションです。悪い人が名前フィールドにこれを入力した場合、どんな出来事が起こるか考えてみましょう: - > xxxxx ';顧客からの削除; < –

+0

これまでどおりに試してみてください。 –

関連する問題