PDO 연구 노트

WBOY
WBOY원래의
2016-08-08 09:21:24970검색

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으로 문의하세요.