PHP接続とMySQLデータベースの操作に関する基本チュートリアル、mysqlに関する基本チュートリアル
ここから始めましょう
私のブログ、バックエンドデータベースとは何ですか?そうです、MySQL であり、サーバー側で使用されるスクリプトは PHP であり、フレームワーク全体は WordPress を使用しています。 PHP と MySQL はカップルのようなもので、常に連携して動作します。さてここでは、MySQL開発入門ともいえるPHPのまとめとMySQLの実際の使い方をまとめていきます。 PHPとMySQLの連携については、以下の3つの方法しかありません
1.mysql 拡張子ですが、現在は推奨されていません。
2.mysqli 拡張機能は、オブジェクト指向スタイルとプロセス指向スタイルの両方を提供します。MySQL バージョン 4.1 以降が必要です。
3. PDO 拡張機能は、PHP がデータベースにアクセスするための軽量で一貫したインターフェイスを定義します。PDO_MYSQL はその固有の実装です。私たちは今のところ開発のみに関心があります。 mysql 拡張機能は推奨されなくなったため、時代に合わせてまとめはしません。Mysqli と PDO メソッドがより頻繁に使用されるため、この記事では mysqli 拡張機能を使用してデータベース サーバーに接続する方法をまとめます。データをクエリして取得する方法、およびその他の重要なタスクを実行する方法。次回のブログ投稿では、PDO の関連コンテンツを要約します。
mysqli拡張機能を使用してください
まず、次のテスト データベース db_test 内のテスト データを確認します。
コードをコピーします コードは次のとおりです:
mysql>select * from tb_test;
+-----+----------+----------+-----+---- ---- ----+
| ID | 姓 | メールアドレス |
+-----+----------+----------+-----+---- ---- ----+
| 123@qq.com |
| 3 | ジョーン | 1385138913 |
| 4 | 789@qq.com |
+-----+----------+----------+-----+---- ---- ----+
3 行セット (0.00 秒)
1. 確立と切断
MySQL データベースと対話するときは、最初に接続を確立し、最後に切断する必要があります。これには、サーバーへの接続とデータベースの選択が含まれ、最後に接続を閉じてリソースを解放します。オブジェクト指向インターフェイスを使用して MySQL サーバーと対話することを選択した場合は、まずコンストラクターを通じて mysqli クラスをインスタンス化する必要があります。
コードをコピーします
コードは次のとおりです:
// mysqli クラスをインスタンス化します
$mysqliConn = 新しい mysqli();
// サーバーに接続し、データベースを選択します
$mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
Printf("MySQL エラー番号:%d", $mysqliConn->errno);
// または
// $mysqliConn->connect("http://127.0.0.1", 'root', 'root');
// $mysqliConn->select_db('db_test');
// データベースと対話します
//接続を閉じる
$mysqliConn->close();
?>
データベースが正常に選択されると、このデータベースに対してデータベース クエリを実行できるようになります。スクリプトの実行が終了すると、開いているすべてのデータベース接続が自動的に閉じられ、リソースが解放されます。ただし、ページの実行中に複数のデータベース接続が必要になる可能性があるため、各接続を適切に閉じる必要があります。使用する接続が 1 つだけの場合でも、スクリプトの最後で接続を閉じることをお勧めします。いずれの場合も、close() は接続を閉じる役割を果たします。
2. 接続エラーの処理
もちろん、MySQL データベースに接続できない場合は、このページで期待される作業を続行できない可能性があります。したがって、接続エラーを必ず監視し、それに応じて対応してください。 mysqli 拡張パッケージには、エラー メッセージをキャプチャするために使用できる多くの機能が含まれています。これを行うために例外を使用することもできます。たとえば、mysqli_connect_errno() メソッドと mysqli_connect_error() メソッドを使用して、MySQL 接続エラーを診断し、それに関する情報を表示できます。
mysqli に関する詳細情報は、こちらでご覧いただけます: http://php.net/manual/zh/book.mysqli.php
データベースと対話する
クエリの大部分は、タスクの作成、取得、更新、削除に関連しており、これらは総称して CRUD と呼ばれます。ここからは CRUD 関連のコンテンツを要約していきます。
1. データベースにクエリを送信します
メソッド query() は、データベースにクエリを送信する役割を果たします。次のように定義されます:
コードをコピーします
コードは次のとおりです:
混合 mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
オプションのパラメーター resultmode を使用して、このメソッドの動作を変更できます。これは 2 つの可能な値を受け入れます。この記事では、この 2 つの違いをまとめます。 http://www.bkjia.com/article/55792.htm; 以下は簡単な使用例です:
コードをコピーします コードは次のとおりです:
// mysqli クラスをインスタンス化します
$mysqliConn = 新しい mysqli();
// サーバーに接続し、データベースを選択します
// パスワードが間違っています
$mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
If ($mysqliConn->connect_error)
{
printf("データベースに接続できません:%s", $mysqliConn->connect_error);
exit();
}
// データベースと対話します
$query = '名前、姓、tb_test からのメールアドレスを選択;';
//MySQL にクエリを送信
$result = $mysqliConn->query($query);
// 結果セットを繰り返し処理します
While (list($firstname, $lastname, $email) = $result->fetch_row())
{
printf("%s %s のメールアドレス:%s
", $firstname, $lastname, $email);
}
//接続を閉じる
$mysqliConn->close();
?>
2. データの挿入、更新、削除
挿入、更新、削除は挿入、更新、削除クエリを使用して実行されます。これらのクエリは実際には選択クエリと同じです。サンプルコードは次のとおりです:
コードをコピーします コードは次のとおりです:
// mysqli クラスをインスタンス化します
$mysqliConn = 新しい mysqli();
// サーバーに接続し、データベースを選択します
// パスワードが間違っています
$mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
If ($mysqliConn->connect_error)
{
printf("データベースに接続できません:%s", $mysqliConn->connect_error);
exit();
}
// データベースと対話します
$query = '名前、姓、tb_test からのメールアドレスを選択;';
//MySQL にクエリを送信
$result = $mysqliConn->query($query);
// 結果セットを繰り返し処理します
While (list($firstname, $lastname, $email) = $result->fetch_row())
{
printf("%s %s のメールアドレス:%s
", $firstname, $lastname, $email);
}
$query = "firstname = 'Yuan' の tb_test から削除;";
$result = $mysqliConn->query($query);
// 影響を受ける行数をユーザーに伝えます
Printf("%d 行が削除されました。
", $mysqliConn->affected_rows);
// 結果セットを再クエリします
$query = '名前、姓、tb_test からのメールアドレスを選択;';
//MySQL にクエリを送信
$result = $mysqliConn->query($query);
// 結果セットを繰り返し処理します
While (list($firstname, $lastname, $email) = $result->fetch_row())
{
printf("%s %s のメールアドレス:%s
", $firstname, $lastname, $email);
}
//接続を閉じる
$mysqliConn->close();
?>
3. クエリメモリを解放します
場合によっては、特に大きな結果セットが取得されることがあります。処理が完了したら、結果セットによって要求されたメモリを解放する必要があります。 free() メソッドを使用すると、このタスクを完了できます。例:
コードをコピーします コードは次のとおりです:
//データベースと対話します
$query = '名前、姓、tb_test からのメールアドレスを選択;';
//MySQL にクエリを送信
$result = $mysqliConn->query($query);
// 結果セットを繰り返し処理します
while (list($firstname, $lastname, $email) = $result->fetch_row())
{
Printf("%s %s のメールアドレス:%s
", $firstname, $lastname, $email);
}
$result->free();
4. クエリ結果を解析する
クエリが実行され、結果セットが準備されたら、結果の行を解析します。各行のフィールドを取得するには複数の方法を使用できます。フィールドを参照する方法のみが異なるため、選択する方法は主に個人の好みによって決まります。
(1) 結果をオブジェクトに入れます
fetch_object() メソッドを使用して完了します。 fetch_object() メソッドは通常、ループ内で呼び出されます。各呼び出しにより、返された結果セットの次の行にオブジェクトが挿入され、PHP の一般的なオブジェクト アクセス構文に従ってこのオブジェクトにアクセスできます。例:
コードをコピーします コードは次のとおりです:
//データベースと対話します
$query = '名前、姓、tb_test からのメールアドレスを選択;';
//MySQL にクエリを送信
$result = $mysqliConn->query($query);
// 結果セットを繰り返し処理します
while ($row = $result->fetch_object())
{
$firstname = $row->firstname;
$lastname = $row->lastname;
$email = $row->email;
}
$result->free();
(2) インデックス配列と連想配列を使用して結果を取得します
mysqli 拡張パッケージでは、連想配列とインデックス配列を使用して、それぞれ fetch_array() メソッドと fetch_row() メソッドを通じて結果セットを管理することもできます。 fetch_array() メソッドは、実際には結果セットの各行を連想配列、数値インデックス配列、またはその両方として取得できます。 fetch_row() は fetch_array のサブセットであると言えます。デフォルトでは、 fetch_array() は連想配列とインデックス配列の両方を取得します。このデフォルトの動作を変更するには、 fetch_array にパラメータを渡します。
MYSQLI_ASSOC、行を連想配列として返します。キーはフィールド名で表され、値はフィールドの内容で表されます。
MYSQLI_NUM は、行を数値インデックス配列として返します。その要素の順序は、クエリで指定されたフィールド名の順序によって決まります。
MYSQLI_BOTH がデフォルトのオプションです。
選択した行と影響を受ける行を特定する
多くの場合、選択クエリによって返される行数、または挿入、更新、または削除によって影響を受ける行数を特定できるようにしたいことがあります。
(1) 返される行数を決定します
選択クエリ ステートメントによって返された行数を知りたい場合は、num_rows 属性が便利です。例:
コードをコピーします コードは次のとおりです:
//データベースと対話します
$query = '名前、姓、tb_test からのメールアドレスを選択;';
//MySQL にクエリを送信
$result = $mysqliConn->query($query);
// 行数を取得します
$result->num_rows;
num_rows は、選択クエリによって取得される行数を決定する場合にのみ有用であることに注意してください。挿入、更新、または削除によって影響を受ける行数を取得したい場合は、以下にまとめたaffected_rows 属性を使用する必要があります。
(2) 影響を受ける行の数を決定します
affected_rows 属性は、挿入、更新、または削除によって影響を受ける行の数を取得するために使用されます。コード例については、上記のコードを参照してください。
データベーストランザクションを実行する
MySQL トランザクションを実行する PHP の機能を強化する 3 つの新しいメソッドがあります。
1.autocommit 機能、自動送信モードを有効化します。
autocommit() 関数は、MySQL 自動コミット モードの動作を制御します。渡されるパラメータは、自動コミットを有効にするか無効にするかを決定します。自動送信を有効にする場合は TRUE を渡し、自動送信を無効にする場合は false を渡します。有効か無効かに関係なく、成功すると TRUE が返され、失敗すると FALSE が返されます。
2.commit 関数は、トランザクションをコミットします。現在のトランザクションをデータベースに送信し、成功した場合は TRUE を返し、それ以外の場合は FALSE を返します。
3.rollback 関数は、現在のトランザクションをロールバックし、成功した場合は TRUE を返し、それ以外の場合は FALSE を返します。
トランザクションについては、後ほどまとめていきます。 この 3 つの API について簡単にまとめます。
終わらない
これは MySQL の学習の始まりにすぎず、終わるわけではありません。これからも頑張ってください。
PHPでmysqlデータベースを操作する手順