ホームページ >バックエンド開発 >PHPチュートリアル >PDO学習ノート
PDO 拡張機能は、PHP がデータベースにアクセスするための軽量で一貫したインターフェイスを定義し、どのようなデータベースが使用されても、一貫した関数を通じてクエリとデータを取得できるようにするデータ アクセス抽象化レイヤーを提供します。
PDO は PHP5.1 でリリースされ、PHP5.0 の PECL 拡張機能でも使用できますが、以前の PHP バージョンでは実行できません。
PDOが登場する前は、PHPでデータベースに接続するための機能はデータベースによって異なりました。
たとえば、MySQL は mysql_connect 関数を使用し、PostgreSQL データベースは pg_connect 関数を使用します。
PDO を通じて記述されたコードを使用すると、将来データベースが変更された場合、データベースの接続パラメーターを適切に変更するだけで済み、ロジック コードを変更する必要はありません。
PDO および主要なデータベース ドライバーは、拡張機能として PHP とともに配布されています。これらを有効にするには、php.ini ファイルを編集するだけです: extension=php_pdo.dll
。
次に、dl() を使用して実行時にロードする特定のデータベースの DLL ファイルを選択するか、次のように php.ini ファイルの php_pdo.dll 行の後で有効にします。
<code><span>extension=<span>php_pdo.dll</span></span><span>extension=<span>php_pdo_mysql.dll</span></span><span>extension=<span>php_pdo_pgsql.dll</span></span><span>extension=<span>php_pdo_sqlite.dll</span></span></code>
<code><span>$dsn</span> = <span>'mysql:dbname=yii2test;host=localhost'</span>; <span>$user</span> = <span>'sqluser'</span>; <span>$password</span> = <span>'sqlpassword'</span>; <span>$db</span> = <span>new</span> PDO(<span>$dsn</span>, <span>$user</span>, <span>$password</span>); <span>try</span>{ <span>$dbh</span> = <span>new</span> PDO(<span>$dsn</span>, <span>$user</span>, <span>$password</span>); }<span>catch</span> (PDOException <span>$e</span>){ <span>print</span>(<span>'Error:'</span>.<span>$e</span>->getMessage()); <span>die</span>(); }</code>
<code><span>$dsn</span> = <span>'pgsql:dbname=yii2test host=localhost port=5432'</span>; <span>$user</span> = <span>'sqluser'</span>; <span>$password</span> = <span>'sqlpassword'</span>; <span>try</span>{ <span>$dbh</span> = <span>new</span> PDO(<span>$dsn</span>, <span>$user</span>, <span>$password</span>); }<span>catch</span> (PDOException <span>$e</span>){ <span>print</span>(<span>'Error:'</span>.<span>$e</span>->getMessage()); <span>die</span>(); }</code>
<code><span>$dsn</span> = <span>'sqlite:d:/sqlite/yii2test.db'</span>; <span>$user</span> = <span>''</span>; <span>$password</span> = <span>''</span>; <span>try</span>{ <span>$dbh</span> = <span>new</span> PDO(<span>$dsn</span>, <span>$user</span>, <span>$password</span>); }<span>catch</span> (PDOException <span>$e</span>){ <span>print</span>(<span>'Error:'</span>.<span>$e</span>->getMessage()); <span>die</span>(); }</code>
PDO 操作 MySQL データベース デモ コード:
<code><span><span><?php</span><span>$dsn</span> = <span>'mysql:dbname=yii2test;host=192.168.0.69;post=3306'</span>; <span>$user</span> = <span>'shou'</span>; <span>$password</span> = <span>'shouadmin'</span>; <span>try</span>{ <span>$db</span> = <span>new</span> PDO(<span>$dsn</span>, <span>$user</span>, <span>$password</span>); <span>// </span><span>$sql</span> = <span>'insert into user(username, password,password_hash, status) value (?, ?, ?, ?)'</span>; <span>$stmt</span> = <span>$db</span>->prepare(<span>$sql</span>); <span>$param</span> = []; <span>$param</span>[] = <span>'admin'</span>. date(<span>'YmdHis'</span>); <span>$param</span>[] = time(); <span>$param</span>[] = md5(time()); <span>$param</span>[] = <span>10</span>; <span>if</span>(<span>$stmt</span>->execute(<span>$param</span>)) { <span>echo</span><span>"insert ok !"</span> .PHP_EOL; } <span>else</span> { <span>echo</span><span>"insert ng !"</span> .PHP_EOL; } <span>// </span><span>echo</span> PHP_EOL. <span>"==> query"</span> . PHP_EOL; <span>$sql</span> = <span>"select * from user"</span>; <span>$data</span> = <span>$db</span>->query(<span>$sql</span>); <span>foreach</span>(<span>$data</span><span>as</span><span>$row</span>) { <span>echo</span><span>$row</span>[<span>"username"</span>] . <span>" "</span> . <span>$row</span>[<span>"password"</span>]. PHP_EOL; } <span>// </span><span>echo</span> PHP_EOL. <span>"==> prepare 1"</span> . PHP_EOL; <span>$sql</span> = <span>'select * from user where username like ?'</span>; <span>$stmt</span> = <span>$db</span>->prepare(<span>$sql</span>); <span>$stmt</span>->execute([<span>'admin%'</span>]); <span>while</span>(<span>$result</span> = <span>$stmt</span>->fetch(PDO::FETCH_ASSOC)) { print_r(<span>$result</span>); } <span>// </span><span>echo</span> PHP_EOL. <span>"==> prepare 2"</span> . PHP_EOL; <span>$sql</span> = <span>'select * from user where username like :username'</span>; <span>$stmt</span> = <span>$db</span>->prepare(<span>$sql</span>); <span>$stmt</span>->execute([<span>':username'</span> => <span>'admin%'</span>]); <span>while</span> (<span>$result</span> = <span>$stmt</span>->fetch(PDO::FETCH_ASSOC)) { print_r(<span>$result</span>); } }<span>catch</span> (PDOException <span>$e</span>){ <span>print</span>(<span>'Error:'</span>.<span>$e</span>->getMessage()); <span>die</span>(); } <span>// 关闭数据库连接</span><span>$db</span> = <span>null</span>; </span></span></code>
著作権表示: この記事はブロガーによるオリジナル記事であり、ブロガーの許可なく複製することはできません。
以上、PDO の学習ノートを関連内容も含めて紹介しましたので、PHP チュートリアルに興味のある友人の参考になれば幸いです。