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

PHPをMySQLに接続する方法

    PHPをMySQLに接続し、さまざまなタイプのデータベース操作を実行する方法を学びたいですか?この記事では、まさにそれを行います。PHPでのMySQLデータベース接続について説明します。

    PHPは、PHPをMySQLデータベースサーバーに接続するためのさまざまな方法を提供します。 PHP 5.5までは、最も一般的な方法の1つはMySQL拡張機能を使用することでした。これは、MySQLサーバーに接続するための「手続き型」の方法を提供していました。ただし、この拡張機能はPHP 5.5で非推奨になっているため、これについては説明しません。

    現在、2つの選択肢はPDOとMySQLiです。

    PDO(PHP Data Objects)拡張機能は、MySQLサーバーとともにさまざまなタイプの基盤となるデータベースサーバーをサポートします。したがって、将来の任意の時点で基盤となるデータベースサーバーを交換することにした場合に備えて、移植性があります。

    一方、MySQLi拡張機能はMySQLサーバーに固有であり、速度とパフォーマンスが向上します。 MySQLi拡張機能は、SQLクエリを直接記述できるため、最初は少し理解しやすいかもしれません。以前にSQLデータベースを使用したことがある場合、これは非常によく知られています。ただし、PDO拡張機能は、SQLデータベースからPHPコードへの強力なマッピングを作成し、SQLまたはデータベースの詳細を知らなくても多くのデータベース操作を実行できるようにします。長期的には、大規模なプロジェクトの場合、これによりコーディングとデバッグの労力を大幅に節約できます。

    この投稿では、MySQLi拡張機能を使用します。ただし、PDO拡張機能について詳しくは、EnvatoTuts+をご覧ください。

    • PHPは、PDO Advanced CRUDGeneratorToolSajalSoniを使用してPHPCRUDインターフェイスをすばやく構築します

    この記事では、次のトピックについて説明します。

    • MySQL接続の作成
    • レコードの挿入、更新、削除
    • レコードの取得

    CodeCanyonで最高のPHPデータベーススクリプト

    この投稿では、PHPからMySQLデータベースへのベアメタル接続を確立する方法を紹介します。これは重要なスキルですが、次のプロジェクトの時間を節約したい場合は、プロのデータベーススクリプトにアップグレードすることをお勧めします。これにより、時間が節約され、作業が簡単になります。

    CodeCanyonでこれまでに作成された中で最高かつ最も有用なPHPデータベーススクリプトを調べてください。低コストの1回払いで、これらの高品質のWordPressテーマを購入し、あなたとあなたの訪問者のWebサイトエクスペリエンスを向上させることができます。

    2020年にCodeCanyonで利用できる最高のPHPデータベーススクリプトのいくつかを次に示します。

    • PHPPHPデータベース抽象化レイヤーとCRUDプラグインの比較SajalSoni

    MySQL接続を作成する

    このセクションでは、PHPスクリプトからMySQLサーバーに接続し、接続オブジェクトを作成する方法を説明します。後で、この接続オブジェクトは、クエリの実行、出力のフェッチ、およびデータベースレコードの操作に使用されます。前に説明したように、この記事ではPHPMySQLi拡張機能を使用します。

    MySQLi拡張機能は、データベース操作を実行するための2つの異なる方法を提供します。オブジェクト指向または手続き型のどちらでも使用できますが、このチュートリアルは初心者を対象としているため、手続き型に固執します。オブジェクト指向のスニペットをご覧になりたい場合は、下のコメントセクションでpingを送信していただければ、喜んで提供させていただきます。

    まず、先に進んで db_connect.phpを作成します 次の内容のドキュメントルートの下にあるファイル。

    <?php
    $mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}");
    
    if (mysqli_connect_errno()) 
    {
        printf("MySQL connection failed with the error: %s", mysqli_connect_error());
        exit;
    }

    mysqli_connectでプレースホルダーを使用したことに注意してください 関数-これらを実際の値に置き換える必要があります。

    各プレースホルダーを調べて、それが何を表すかを見てみましょう。

    • {HOST_NAME} :これは、MySQLサーバーのホスト名またはIPアドレスを表します。 PHPと同じシステムにMySQLサーバーをインストールした場合は、localhostを使用する必要があります。 または127.0.0.1 。一方、外部でホストされているMySQLサーバーを使用している場合は、対応するホスト名またはIPアドレスを使用できます。
    • {DATABASE_USERNAME} :これは、MySQLユーザーのユーザー名を表します。基本的に、これはMySQLサーバーへの接続に使用するユーザー名です。
    • {DATABASE_PASSWORD} :これは、MySQLユーザーのパスワードを表します。繰り返しますが、これは、MySQLユーザー名とともにMySQLサーバーに接続するために使用するパスワードです。
    • {DATABASE_NAME} :これは、接続するMySQLデータベースの名前です。接続が作成されたら、このデータベースにさらに操作を問い合わせます。

    先に進み、これらのプレースホルダーを実際の値に置き換えます。私の場合、MySQLサーバーをローカルにインストールし、 tutsplus-demo-userを持つMySQLユーザーがいます。 MySQLユーザー名およびtutsplus-demo-passwordとして MySQLパスワードとして。これで、上記の例は次のようになります。

    <?php
    $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
    
    if (mysqli_connect_errno()) 
    {
        printf("MySQL connection failed with the error: %s", mysqli_connect_error());
        exit;
    }

    この例を実行すると、データベース接続リンクが作成され、$mysqli_linkに割り当てられます。 変数。これは、後でさまざまなタイプのデータベース操作を実行するために使用します。

    一方、接続の設定に問題がある場合は、mysqli_connect_errno 関数はエラーコードを返し、mysqli_connect_error 関数は実際のエラーを表示します。上記の例では、デバッグ目的で使用しています。

    これで、MySQLサーバーへの接続が成功しました。次のセクション以降、MySQLサーバーを使用してさまざまなタイプのクエリを実行する方法を説明します。

    レコードの挿入方法

    前のセクションでは、mysqli_connectの使用方法について説明しました MySQLサーバーとのデータベース接続を設定する関数。このセクションでは、接続オブジェクトを使用してINSERTを実行する方法について説明します。 クエリ。

    この記事で説明した例に従う場合は、データベースに次のMySQLテーブルを作成する必要があります。これからすべての例で使用するテーブルです。

    CREATE TABLE `students` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
      `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
      `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

    先に進み、phpMyAdminソフトウェアまたはコマンドラインツールを使用して上記のMySQLテーブルを作成します。

    次に、db_insert.phpを作成しましょう 以下の内容のファイル。接続パラメータを独自のものに置き換えることを忘れないでください。

    <?php
    $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
    
    if (mysqli_connect_errno())
    {
        printf("MySQL connection failed with the error: %s", mysqli_connect_error());
        exit;
    }
    
    $insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`)
    VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, '[email protected]') ."')";
     
    // run the insert query
    If (mysqli_query($mysqli_link, $insert_query)) {
        echo 'Record inserted successfully.';
    }
     
    // close the db connection
    mysqli_close($mysqli_link);
    ?>

    まず、mysqli_connectを使用してデータベース接続を設定します 前に説明したように、関数。その後、後で実行する挿入クエリを準備しました。 mysqli_real_escape_stringを使用したことに注意してください。 挿入クエリで使用する文字列値をエスケープする関数。特に、$_POSTを介して送信された値を処理する場合は、この関数を使用する必要があります SQLインジェクションを回避するための変数。

    最後に、mysqli_queryを使用しました 関数。2つの引数を取ります。最初の引数は、クエリが実行されるアクティブな接続リンクです。そして2番目の引数は実行したいMySQLクエリです。 mysqli_query 関数はTRUEを返します クエリが正常に実行された場合。

    最後に、mysqli_closeを使用しました アクティブなデータベース接続を閉じる関数。データベース操作が完了したら、データベース接続を閉じることをお勧めします。

    先に進んでスクリプトを実行すると、studentsにレコードが挿入されます。 テーブル!

    レコードを更新する方法

    PHPスクリプトからデータベース内のレコードを更新することは、挿入操作と非常によく似ています。唯一の違いは、クエリが挿入クエリではなく更新クエリになることです。

    上記の例を修正して、first_nameを更新しましょう。 次の例に示すように、フィールド。

    <?php
    $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
    
    if (mysqli_connect_errno())
    {
        printf("MySQL connection failed with the error: %s", mysqli_connect_error());
        exit;
    }
    
    $update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = '[email protected]'";
     
    // run the update query
    If (mysqli_query($mysqli_link, $update_query)) {
        echo 'Record updated successfully.';
    }
     
    // close the db connection
    mysqli_close($mysqli_link);
    ?>

    先に進んでスクリプトを実行すると、studentsのレコードが更新されます。 テーブル。

    レコードの選択方法

    前のセクションでは、PHPスクリプトからデータベースにレコードを挿入および更新する方法について説明しました。このセクションでは、さまざまなタイプのMySQLi関数を使用してデータベースからレコードをフェッチする方法について説明します。

    まず、mysqli_queryを使用する必要があります 選択クエリを実行する関数。選択クエリが正常に実行されると、mysqli_query 関数はmysqli結果オブジェクトを返します。これを使用して、selectクエリによって返されたレコードを反復処理できます。 MySQLi結果オブジェクトからレコードをフェッチして反復処理する場合、さまざまな関数を使用できます。

    • mysqli_fetch_all :すべての結果行を一度にフェッチできます。結果を連想配列、数値配列、またはその両方として指定することもできます。
    • mysqli_fetch_array :一度に1行ずつ取得できます。したがって、すべてのレコードを反復処理するには、whileループを使用する必要があります。ここでも、結果行を連想配列、数値配列、またはその両方として指定できます。
    • mysqli_fetch_assoc :結果行を連想配列として一度に1つずつフェッチします。
    • mysqli_fetch_object :結果行を一度に1つずつオブジェクトとしてフェッチします。

    次の例を見て、その仕組みを理解しましょう。

    <?php
    $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
    
    if (mysqli_connect_errno())
    {
        printf("MySQL connection failed with the error: %s", mysqli_connect_error());
        exit;
    }
    
    $select_query = "SELECT * FROM students LIMIT 10";
    $result = mysqli_query($mysqli_link, $select_query);
    
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        echo "First Name:" . $row['first_name'] . "<br/>";
        echo "Last Name:" . $row['last_name'] . "<br/>";
        echo "Email:" . $row['email'] . "<br/>";
        echo "<br/>";
    }
    
    // close the db connection
    mysqli_close($mysqli_link);
    ?>

    ご覧のとおり、mysqli_fetch_arrayを使用しました MYSQLI_ASSOCで機能する 2番目の引数としてのオプション。したがって、結果の行を連想配列として返します。 MYSQLI_NUMを使用する場合 オプションの場合、$row[0]のようにアクセスします 、$row[1] および$row[2] 上記の例では。

    一方、mysqli_fetch_objectを使用する場合 上記の例の関数では、次のスニペットに示すように値にアクセスできます。簡潔にするために、whileループスニペットのみを含めます。

    …
    …
    while ($row = mysqli_fetch_object($result)) {
        echo "First Name:" . $row->first_name . "<br/>";
        echo "Last Name:" . $row->last_name . "<br/>";
        echo "Email:" . $row->email . "<br/>";
        echo "<br/>";
    }
    ...
    ...

    したがって、このようにして、MySQLiデータベースからレコードをフェッチして表示できます。

    レコードを削除する方法

    このセクションでは、PHPスクリプトから削除クエリを実行する方法を説明します。データベースからレコードを削除するのは、削除クエリを準備してmysqli_queryで実行するだけなので、非常に簡単な操作です。 機能。

    次の例を見て、どのように機能するかを見てみましょう。

    <?php
    $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
    
    if (mysqli_connect_errno())
    {
        printf("MySQL connection failed with the error: %s", mysqli_connect_error());
        exit;
    }
    
    $delete_query = "DELETE FROM students WHERE `email` = '[email protected]'";
     
    // run the update query
    If (mysqli_query($mysqli_link, $delete_query)) {
        echo 'Record deleted successfully.';
    }
     
    // close the db connection
    mysqli_close($mysqli_link);
    ?>

    ご覧のとおり、この場合のクエリが削除クエリであることを除いて、挿入と更新の例ですでに見たものとすべて同じです。

    これが、PHPスクリプトからさまざまなタイプのデータベース操作を実行する方法です。

    これで、このチュートリアルの終わりに到達しました。今日これまでに説明したことは、データベース接続の概念、特にPHPをMySQLに接続し、さまざまなタイプの操作を実行する方法を強化するのに役立つはずです。


    1. SQLコマンドはどのように分類されますか| UBIQ

    2. SQLコマンドINSERTは機能していますが、データがテーブルに表示されません

    3. SQLite MAX

    4. Oracleでネストされたトランザクションを使用する