データベースはいたるところにあり、データベースなしで存在できる実用的なPHPアプリケーションはありません。 PHPは当初から、一般的なすべてのDBMSとインターフェイスするいくつかの方法を提供しています。たとえば、MySQLベースのデータベースとインターフェイスする2つの一般的な方法は、 mysqlです。 およびmysqli。
何年にもわたって、データベースは長い道のりを歩んできました。現在、いくつかの異なるベンダーが、最新のPHPアプリを強化する人気のあるDBMSを提供しています。開発手法を標準化および合理化するために、PHPはPHP 5.1にPHPデータオブジェクト(PDO)を導入しました。これらのオブジェクトは、PDOデータベース接続をセットアップするために使用されます。
PDOは、PHPアプリケーションのデータベースにアクセスして管理するための高速で一貫性のあるインターフェイスを提供するデータベースアクセス層です。すべてのDBMSには、PHPアプリケーションでPDOを使用するときにインストールする必要のある特定のPDOドライバーがあります。
サポートされているデータベース
ドライバー名サポートされているデータベース
PDO_CUBRID | Cubrid |
PDO_DBLIB | FreeTDS / Microsoft SQL Server / Sybase |
PDO_FIREBIRD | 火の鳥 |
PDO_IBM | IBM DB2 |
PDO_INFORMIX | IBM Informix Dynamic Server |
PDO_MYSQL | MySQL 3.x / 4.x / 5.x |
PDO_OCI | Oracle Call Interface |
PDO_ODBC | ODBC v3(IBM DB2、unixODBC、win32 ODBC) |
PDO_PGSQL | PostgreSQL |
PDO_SQLITE | SQLite3およびSQLite2 |
PDO_SQLSRV | Microsoft SQL Server / SQL Azure |
PDO_4D | 4D |
デフォルトでは、PHPにはPDO_SQLiteドライバーがインストールされています。ただし、他のデータベースを使用する場合は、最初に関連するドライバーをインストールする必要があります。
システムにインストールされているドライバーを確認するには、新しいPHPファイルを作成し、それに次のコードスニペットを追加します。
<?php print_r(PDO::getAvailableDrivers()); ?>
PDOの操作
PDOは、以前のすべてのデータベース相互作用アプローチを置き換えます。 PDOを使用すると、CRUDおよび関連するDBMS操作を簡単に実行できます。実際、PDOは、データベース関連の操作を残りのコードから分離するレイヤーとして機能します。
次のこともお勧めします: PHPとMySQLの単純なCRUD
接続性
PDOの最も重要な利点の1つは、シンプルで非常に単純なデータベース接続です。データベースとの接続を設定するために使用される次のコードスニペットについて考えてみます。基盤となるDBMSが変更された場合、必要な変更はデータベースタイプのみであることに注意してください。
<?php Class Connection { private $server = "mysql:host=localhost;dbname=cloudways"; private $user = "root"; private $pass = ""; private $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,); protected $con; public function openConnection() { try { $this->con = new PDO($this->server, $this->user,$this->pass,$this->options); return $this->con; } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } } public function closeConnection() { $this->con = null; } } ?>
上記のコードスニペットでは、DBMSがMySQLであることに注意してください。ただし、DBMSがMS SQL Serverに変更された場合、唯一の変更は mysqlの置き換えになります。 mssqlを使用します。
注: PDOは例外を処理できます。したがって、常にその操作をtryandcatchブロックでラップしてください。
サーバーで時間を無駄にするのをやめる
Cloudwaysがサーバー管理を処理するため、優れたアプリの作成とクライアントの満足度の維持に集中できます。
無料で開始PDOを使用したテーブルの作成
テーブルを作成するには、最初にクエリ文字列を宣言してから、 execで実行します。 データが返されないため、機能します。
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); // sql to create table $sql = "CREATE TABLE `Student` ( `ID` INT NOT NULL AUTO_INCREMENT , `name`VARCHAR(40) NOT NULL , `last_ame` VARCHAR(40) NOT NULL , `email` VARCHAR(40)NOT NULL , PRIMARY KEY (`ID`)) "; // use exec() because no results are returned $db->exec($sql); echo "Table Student created successfully"; $database->closeConnection(); } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
PDOを使用したデータの挿入
PDOを使用してデータをテーブルに挿入するには、最初に prepareを使用してクエリを準備します。 声明。次に、このクエリは executeで実行されます 働き。この方法により、SQLインジェクション攻撃が防止されることに注意してください。
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); // inserting data into create table using prepare statement to prevent from sql injections $stm = $db->prepare("INSERT INTO student (ID,name,last_name,email) VALUES ( :id, :name, :lastname, :email)") ; // inserting a record $stm->execute(array(':id' => 0 , ':name' => 'Saquib' , ':lastname' => 'Rizwan' , ':email' => '[email protected]')); echo "New record created successfully"; } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
PDOを使用してデータを選択
データを選択するには、最初にクエリ文字列を作成してから、それぞれで実行します。 テーブルからレコードをフェッチするためのループ。
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "SELECT * FROM student " ; foreach ($db->query($sql) as $row) { echo " ID: ".$row['ID'] . "<br>"; echo " Name: ".$row['name'] . "<br>"; echo " Last Name: ".$row['last_name'] . "<br>"; echo " Email: ".$row['email'] . "<br>"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
PDOでデータを更新
テーブル内のレコードを更新するには、最初にクエリ文字列を宣言してから、 execで実行します。 機能。
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "UPDATE `student` SET `name`= 'yourname' , `last_name` = 'your lastname' , `email` = 'your email' WHERE `id` = 8" ; $affectedrows = $db->exec($sql); if(isset($affectedrows)) { echo "Record has been successfully updated"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
PDOを使用してデータを削除する
テーブルからレコードを削除するには、最初にクエリ文字列を宣言してから、 execで実行します。 機能。
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "DELETE FROM student WHERE `id` = 8" ; $affectedrows = $db->exec($sql); if(isset($affectedrows)) { echo "Record has been successfully deleted"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
結論
PDOは、データベースへの接続と操作のプロセスを大幅に容易にするデータアクセスレイヤーです。おそらく、PDOの最も優れている点は、データベース移行の合理化されたプロセスです。イテレータを使用してPDOクエリを高速化したい場合は、MichelangelovanDamによるこの記事を確認してください。
この記事では、PDOを紹介し、PHPでPDOを使用してCRUDアクションを実行する方法を強調しました。また、PDOデータベース接続のセットアップについても説明しました。質問がある場合、またはディスカッションに追加したい場合は、下にコメントを残してください。