ホームページ >バックエンド開発 >PHPチュートリアル >PHP で PDO を使用して、MySQL の「mysql_fetch_array」と同様の機能を実現するにはどうすればよいですか?

PHP で PDO を使用して、MySQL の「mysql_fetch_array」と同様の機能を実現するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-15 03:52:09379ブラウズ

How Can I Achieve Similar Functionality to MySQL's `mysql_fetch_array` Using PDO in PHP?

PHP で PDO を使用して結果配列をフェッチする

SQL インジェクションの脆弱性を軽減するために、通常の代わりに PDO を使用しようとしています。 MySQL 接続。 PDO スクリプトが以前の MySQL スクリプトと同様の機能を提供するかどうか疑問に思うと、ジレンマが生じます。

元のスクリプト:

PDO スクリプト:

$pdo = new PDO('mysql:host=$host; dbname=$database;', $user, $pass);
$stmt = $pdo->prepare('SELECT * FROM auction WHERE name = :name');
$stmt->bindParam(':name', $_GET['searchdivebay']);
$stmt->execute(array(':name' => $name);

通常の MySQLスクリプト:

$dbhost = @mysql_connect($host, $user, $pass) or die('Unable to connect to server');

@mysql_select_db('divebay') or die('Unable to select database');
$search = $_GET['searchdivebay'];
$query = trim($search);

$sql = "SELECT * FROM auction WHERE name LIKE '%" . $query . "%'";

if(!isset($query)){
    echo 'Your search was invalid';
    exit;
} //line 18

$result = mysql_query($trim);
$numrows = mysql_num_rows($result);
mysql_close($dbhost);

PDO フェッチ機能

通常の MySQL スクリプトで使用した while ループと同様の機能を実現するには、PDOStatement を利用できます。 .fetchAll メソッド。方法は次のとおりです:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(\PDO::FETCH_ASSOC);

結果配列:

これは、各サブ配列に結果セットの行が含まれる連想配列の配列を返します。たとえば、次のコード サンプルは次の出力を生成します:

print_r($result);

出力:

Array
(
    [0] => Array
        (
            [NAME] => pear
            [COLOUR] => green
        )

    [1] => Array
        (
            [NAME] => watermelon
            [COLOUR] => pink
        )
)

この配列構造により、各行のデータに簡単にアクセスでき、同等の機能が保証されます。以前の MySQL スクリプトにコピーします。

以上がPHP で PDO を使用して、MySQL の「mysql_fetch_array」と同様の機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。