ホームページ  >  記事  >  バックエンド開発  >  PDO学習ノート

PDO学習ノート

WBOY
WBOYオリジナル
2016-08-08 09:21:24936ブラウズ

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>

MySQL データベース接続

<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>

PostgreSQL データベース接続

<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>

SQLite データベース接続

<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 チュートリアルに興味のある友人の参考になれば幸いです。

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