はじめに:
PDO 拡張機能は、PHP がデータベースにアクセスするための軽量で一貫したインターフェイスを定義し、どのようなデータベースが使用されても、クエリとデータの取得を可能にします。
これは、一貫した機能と記述方法を通じてさまざまなデータベースを操作できるようにするデータベース アクセス抽象化レイヤーを提供します。これは、将来のデータベース移行に有益であり、もちろんセキュリティも向上します。
比較:
mysqlを例としてphpでデータベースを操作するために一般的に使用される方法には、php_mysql、php_mysqli、pdo
1が含まれます。php_mysqlとphp_mysqliは移植性がなく、mysqlデータベースにのみ適用できますが、pdoは簡単に適用できます。移植されました。
2.php_mysql は、PHP を初めて使用するときにデータベースを操作するために学習する関数ですが、実際にはほとんど使用されません。最も重要な点は、セキュリティ上の問題を引き起こしやすいということです。
SQL インジェクションがあるため、PHP は関数 mysql_real_escape_string を提供します。変数が多数ある場合は、それぞれが mysql_real_escape_string を通過する必要があります。
むしろとても面倒になります。
3.pdo は前処理をサポートしており、前処理関数は SQL インジェクションを効果的に回避し、効率を向上させることができます。
4.php_mysqli と pdo はどちらもオブジェクト指向をサポートしています。
5.pdo 長い接続方法は php_mysqli よりもパフォーマンスが優れています (オンライン情報を参照)
php_mysql 方法の最も致命的な点は、確信が持てない限り、他のデータベースに移植できないことです。データベースは変更しないでください。明らかに、データベースに接続する pdo メソッドがトレンドになるでしょう。
pdo データベースの簡単な操作:
まず、php は php-pdo 関連の拡張機能を有効にする必要があります
<?php $dbType = 'mysql'; $dbUser = 'root'; $dbPass = 'simael'; $dbhost = 'localhost'; $dbName = 'pdotest'; $dsn="$dbType:host=$dbhost;dbname=$dbName"; try{ $pdo = new PDO($dsn, $dbUser, $dbPass); echo "PDO成功连接MySQL数据库!"; }catch(PDOException $exception){ echo $exception->getMessage(); }
データを挿入
<?php //$pdo->query('set names utf8'); $sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()"; $res1 = $pdo->exec($sql); var_dump($res1);
この時点で、データベースに行くと、エンコードの問題により、中国語の文字が文字化けする可能性があります
コードを追加しても
$pdo->query('set names utf8');
3. データベースのエンコーディング、テーブルとフィールドのエンコーディング
4. ファイル自体のエンコーディング プロパティ
5データベースに接続するときに、$pdo->query('set names utf8');
上記の内容が一貫している限り、エンコーディングの問題は通常解決されます。
完全なサンプルコード: (ファイル自体も utf8 でエンコードする必要があります)
$dbType = 'mysql'; $dbUser = 'root'; $dbPass = 'simael'; $dbhost = 'localhost'; $dbName = 'pdotest'; $dsn="$dbType:host=$dbhost;dbname=$dbName"; try{ $pdo = new PDO($dsn, $dbUser, $dbPass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES'utf8';")); //$pdo = new PDO($dsn, $dbUser, $dbPass); echo "PDO成功连接MySQL数据库!"; }catch(PDOException $exception){ echo $exception->getMessage(); } $pdo->query('set names utf8'); $sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()"; $res1 = $pdo->exec($sql); var_dump($res1); $sql = "SELECT * FROM la_comments"; $res2 = $pdo->query($sql); while($row = $res2->fetch()){ print_r($row); echo '
'; } $pdo = null; ?>
以上、php pdoの簡単な使い方(1)を内容も含めて紹介しましたので、PHPチュートリアルに興味のある方の参考になれば幸いです。