sql >> データベース >  >> RDS >> Database

PDOデータベース接続による簡単なCRUD操作

    データベースはいたるところにあり、データベースなしで存在できる実用的な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データベース接続のセットアップについても説明しました。質問がある場合、またはディスカッションに追加したい場合は、下にコメントを残してください。


    1. JSONタイプ内の配列要素のクエリ

    2. 整数をチェックするSQLLIKE条件?

    3. Oracle11gでのピボット

    4. Oracle18のjson_tableを介してjsonを解析します