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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.