0

私のスクリプトは攻撃に対して脆弱であり、PDO に変更するように言われました。私はこれを試してみましたが、動作していますが、test.php ページにこのように表示されます。

Array 
( 
    [name] => matthew 
    [email] => ''@aol.com 
    [order] => shipped 
    [status] => AU1776 
    [attendeesFR] => 1 
)

配列とすべての文字を使用せずに、このデータを次々に表示するにはどうすればよいですか?

PDO スクリプト:

    <?php

    $host=""; // Host name
        $username=""; // Mysql username
        $password=""; // Mysql password
        $db_name=""; // Database name
        $tbl_name="members"; // Table name


        $db = new PDO('mysql:host='.$host.
                          ';dbname='.$db_name.
                          ';charset=UTF-8',
                    $username, $password);
        $stmt = $db->prepare('SELECT * FROM `members` WHERE `username`=:username LIMIT 1');
        $result = $st

        print_r($result);
    ?>
4

1 に答える 1

2

PHP Data Objects (PDO) 拡張機能は、PHP でデータベースにアクセスするための軽量で一貫したインターフェイスを定義します。PDO インターフェイスを実装する各データベース ドライバーは、データベース固有の機能を通常の拡張関数として公開できます。つまり、Mysql 関数の使用を停止できます。代わりに、PDO を使用して、サーバーにインストールされている MYSQL ドライバーまたはその他のデータベース ドライバーを実行できます。

ここでいくつかの情報を見つけることができます: http://www.php.net/manual/en/pdo.construct.php

これを試してください:

<?php

$host=""; // Host name
    $username=""; // Mysql username
    $password=""; // Mysql password
    $db_name=""; // Database name
    $tbl_name="members"; // Table name

    $db = new PDO('mysql:host='.$host.
                      ';dbname='.$db_name.
                      ';charset=UTF-8',
                $username, $password);
    $stmt = $db->prepare('SELECT * FROM `members` WHERE `username`=:username LIMIT 1');
    $stmt->bindValue(':username', $_POST['textfield'], PDO::PARAM_STR);
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);

    print_r($result);
?>
于 2013-04-30T13:28:22.900 に答える