ホームページ php教程 php手册 PHP と MySQL を使用してデータベース主導の Web サイトを構築する (6)

PHP と MySQL を使用してデータベース主導の Web サイトを構築する (6)

Jun 21, 2016 am 08:58 AM
gt lt mysql nbsp quot

mysql|データ|データベース

概要

この章では、情報をデータベースに保存し、Web ページに表示する方法を学びます。

(2002-08-29 14:11:25)

------------------------------------- -------------------------------------------------- ----
Wing 著、出典: Linuxaid


第 4 章: PHP を使用して MySQL データベースにアクセスする

この章では、Web 上で PHP を使用する方法を学習します。ページはデータベースに情報を保存し、それを表示します。これまでに、リレーショナル データベース エンジンである MySQL とサーバーサイド スクリプト言語である PHP をインストールし、それらに関する基本的な知識を学びました。この章を学習すると、これら 2 つの新しいツールを使用してデータベース主導の Web サイトを構築する方法が理解できるようになります。

前のパートの復習

先に進む前に、学習の目的を復習することが大切です。私たちのシステムには、スクリプト言語 PHP とデータベース エンジン MySQL という 2 つの強力な新しいツールが導入されました。この 2 つがどのように連携するかを理解することが重要です。

データベース駆動型 Web サイトの本質は、サイトのコンテンツをデータベース内に存在させ、このデータベースを通じて Web ページを動的に生成し、訪問者が標準の Web ブラウザを通じて Web ページを表示できるようにすることです。したがって、システムの一端にはサイトへの訪問者がおり、http://www.yoursite.com/ にアクセスして標準の HTML 形式の Web ページを取得し、それを Web ブラウザに表示します。システムの反対側には、SQL クエリ (コマンド) への応答方法のみを理解する MySQL データベース内の 1 つまたは複数のデータ テーブルにサイトのコンテンツが保存されています。

PHP スクリプト言語は、この 2 つの間の連携の役割を果たします。PHP を使用すると、サイトの外観 (画像やページ デザインを含む) を決定することができます。この時点で、コンテンツはこの「テンプレート」に属します。PHP コードを使用して MySQL データベースに接続し、SQL クエリを使用してデータを取得し、対応する場所に表示できます。ここで使用した SQL クエリは同じです。第 2 章の ジョークデータテーブルを作成する場合も同様です。

これで、訪問者がデータベース駆動型 Web サイトのページにアクセスすると何が起こるかを明確に理解できるはずです。

訪問者の Web ブラウザ このページをリクエストするには、標準の URL を使用します。

Web サーバー ソフトウェア (Apache、IIS など) は、要求されたページが PHP スクリプトであることを認識し、ページ要求に応答する前に PHP プラグインを使用してそれを解釈します。

一部の PHP コマンド (まだ学習していません) は、MySQL データベースに接続し、この Web ページに属するコンテンツをデータベースに要求します。

MySQL データベースが応答し、要求されたコンテンツを PHP スクリプトに送信します。

PHP スクリプトは、コンテンツを 1 つまたは複数の PHP 変数に保存し、使い慣れた echo 関数を使用して Web ページの一部として出力します。

PHP プラグインは処理を完了し、生成された HTML のコピーを Web サーバーに返します。

Web サーバーは、この HTML コピーを Web ブラウザーに送信します。これは標準の HTML ファイルになります。ただし、HTML ファイルから直接取得されるのではなく、PHP プラグインによって提供される出力から取得されます。

PHP を使用した MySQL への接続

Web ページに含まれるコンテンツを MySQL データベースから取得する前に、まず MySQL への接続を確立する方法を知る必要があります。第 2 章では、mysql というプログラムを使用してこのような接続を作成しました。 PHP ではそのようなプログラムは必要ありません。MySQL への接続のサポートは言語に組み込まれています。このような接続を確立するには、次の関数が使用されます:

mysql_connect(

, , );


ここで、 はyou 第 2 章で MySQL サーバーに接続するために使用したユーザー名とパスワード。

PHP の関数は呼び出されると値を返す (出力する) ことが多いことを覚えているかもしれません。思い出させたわけではないので心配しないでください。初めて機能に触れたときに詳しく説明します。ほとんどの関数は、呼び出された後、次回使用するために変数に保存できる値を返します。たとえば、上で紹介した mysql_connect 関数は、確立された接続を識別する番号を返します。この接続を使用するので、この値を保存する必要があります。 MySQL データベースに接続する方法の例を次に示します。

$dbcnx = mysql_connect("localhost", "root", "mypasswd");


MySQL サーバーの場合、上記の関数の 3 つのパラメーターの値が異なる場合があることに注意してください。ここで、mysql_connect が値 (接続識別子と呼びます) を返し、それを変数 $dbcnx に格納していることに注目してください。

MySQL は完全に分散されたソフトウェアであるため、サービスの利用不能、ネットワークの混雑、ユーザー名とパスワードの不一致などの可能性を考慮する必要があります。このような場合、mysql_connect 関数は接続 ID を返すことができません (接続が確立されていないため)。この場合、論理 false が返されます。これにより、if ステートメントを使用して接続状況を処理できるようになります: $dbcnx = @mysql_connect("localhost", "root", "mypasswd");


if (!$dbcnx) {
echo( "

現時点では " .
" データベース サーバーに接続できません。

" );
exit();
}



上記のコード スニペットには 3 つの新しい点が表示されます。まず、mysql_connect 関数の前に @ 記号を追加します。 mysql_connect を含む多くの関数は、失敗後に見苦しいエラー メッセージを表示します。関数名の前に @ 記号を付けると、実行が失敗したときに関数に通知され、独自のわかりやすいエラー メッセージを表示できます。

次に、if ステートメントの条件で、$dbcnx 変数の前に感嘆符が追加されます。この感嘆符は、PHP の「no 演算子」に相当します。つまり、論理的な真実を論理的な虚偽に変え、論理的な虚偽を論理的な真実に変える。このようにして、接続が失敗すると、mysql_connect は論理 false を返し、!$dbcnx は論理 true になり、if ステートメントが実行されます。逆に、接続が成功した場合、$dbcnx に格納されている接続識別子は論理 true (PHP では、ゼロ以外の数値はすべて論理 true とみなされます) になるため、!$dbcnx は論理 false となり、if ステートメントは実行されません。

最後の関数は exit 関数です。これはパラメーターなしで最初に遭遇する関数です。この関数が行うことは、PHP がこのページの読み取りを停止することだけです。データベースに接続できない場合、ほとんどの場合、このページには有用な情報が表示されないため、これはデータベース接続に失敗した場合に適切な応答です。

第 2 章で行ったように、接続が確立された後の次のステップは、操作するデータベースを選択することです。第 2 章で作成したジョーク データベースを使用して作業します。このデータベースは、joks という名前です。 PHP でデータベースを選択するために使用される別の関数:

mysql_select_db("jokes", $dbcnx);


ここでは、接続 ID を示すために $dbcnx 変数を使用していることに注意してください。この関数で使用されます。このパラメータは実際には省略されます。このパラメータを省略すると、関数は最後に開かれた接続を自動的に使用します。この関数は、成功すると論理 true を返し、失敗すると論理 false を返します。慎重に、エラーを処理するために if ステートメントも使用します。


if (! @mysql_select_db("jokes") ) {
echo( "

ジョークが見つかりません" .
"この時点のデータベース。

" );
exit();
}



接続が確立され、選択されたときデータベースを作成したら、データベースに保存されているデータの操作を開始できます。

PHP での SQL クエリの実行

第 2 章では、mysql というプログラムを使用して MySQL データベース サーバーに接続し、SQL クエリ (コマンド) を入力して、クエリ結果がすぐに得られます。 PHP には、mysql_query 関数という同様のメカニズムがあります。

mysql_query(, );


ここで、 は実行する SQL コマンドを含む文字列です。 mysql_select_db と同様、接続 ID パラメータもオプションです。

この関数の戻り値は、発行されたクエリの種類によって異なります。ほとんどの SQL コマンドでは、mysql_query は論理 true または論理 false を返し、実行が成功したかどうかを示します。次の例を参照してください。これは、第 2 章で作成した Jokes データ テーブルの作成に使用されています。


$sql = "CREATE TABLE Jokes ( " .
"ID INT NOT NULL AUTO_INCREMENT PRIMARY) KEY, " .
"JokeText TEXT, " .
"JokeDate DATE NOT NULL " .
")";
if ( mysql_query($sql) ) {
echo( "< P>ジョーク テーブルが正常に作成されました!

");
} else {
echo("

ジョーク テーブルの作成中にエラーが発生しました: " .
mysql_error() . "< ;/P> ;");
}



ここで使用される mysql_error は、MySQL サーバーによって発行された最後のエラー メッセージを文字列の形式で返します。

DELETE、INSERT、および UPDATE (保存されたデータの変更に使用) の場合、MySQL はこのクエリによって影響を受けるデータ行の数を知ることができます。第 2 章で「チキン」という単語を含むすべてのジョークの日付を設定するために使用した次の SQL コマンドを考えてみましょう:


$sql = "UPDATE Jokes SET JokeDate='1990- 04-01 ' " .
"WHERE JokeText LIKE '%chicken%'";
このクエリを実行すると、mysql_affected_rows 関数を使用して、この変更によって影響を受けるデータ行の数を表示できます:
if ( mysql_query ($sql) ) {
echo("

影響を受ける更新 " .
mysql_affected_rows() . " rows.

");
} else {
echo("

更新実行中のエラー: " .
mysql_error() . "

");
}



いくつかの SELECT コマンドがあります。大量の情報を取得するため、PHP はこの情報を処理するメソッドを提供する必要があります。

SELECT 結果セットの処理

ほとんどの SQL クエリでは、mysql_query 関数は論理 true または論理 false のみを返します。 SELECT クエリの場合、これだけでは明らかに十分ではありません。 SELECT クエリはデータベースに保存されているデータを表示するために使用されることを覚えておいてください。 PHP は、クエリが成功したか失敗したかを示すだけでなく、クエリの結果も取得する必要があります。その結果、SELECT クエリを実行すると、mysql_query は「結果セット」を識別する番号を返します。これには、クエリによって返されたすべての行のリストが含まれます。クエリが失敗した場合でも、関数は論理 false を返します。


$result = mysql_query("SELECT JokeText FROM Jokes");
if (!$result) {
echo("

クエリ実行エラー: " .
mysql_error() . "

");
exit();
}



クエリの実行時にエラーが発生しないと仮定すると、上記のコードはジョーク ライブラリに保存されているすべてのジョークのテキストを含む結果セットが配置されます。この場所は変数 $result に保存されます。データベース内のジョークの数に制限がないため、この結果セットは非常に大きくなる可能性があります。

while ループは大量のデータを処理するのに非常に便利な制御ステートメントであると前に述べました。これは、結果セット内のデータ行を 1 つずつ処理するコードの基本形式です。 >

while ( $row = mysql_fetch_array($result) ) {
// 行を処理します...
}



この while の条件これは以前に使用したものとは異なるように見えるため、ここでどのように機能するかを説明する必要があります。まず、この条件を別個のステートメントとして考えることができます:

$row = mysql_fetch_array($result);


mysql_fetch_array 関数は 1 つのパラメーター (この例では storage (in $result 変数) は結果セットを受け取り、結果セット内の次の行をデータとして返します。配列の概念にまだ慣れていない場合でも、心配する必要はありません。以下で詳しく説明します。この結果セットに他のデータ行がない場合、mysql_fetch_array は論理 false を返します。

さて、上記のステートメントは $row 変数に値を定義し、同時にステートメント全体も同じ値を取得します。これが、while ループの条件でこのステートメントを使用する理由です。結果セットに複数の行がある場合、while ループは条件が論理的に false になるまでループを実行し続けるからです。 $row が次の行の値を取得するたびに、残るのはループ内の $row 変数から対応する値を取得する方法だけです。

結果セット内の行は配列として記述されます。配列は、複数の値を含めることができる特殊なタイプの変数です。変数を値のコンテナーと考え​​ると、配列は間隔を持つコンテナーと考え​​ることができ、各間隔に個別の値を格納できます。データ行の場合、この間隔はデータ テーブルの列名に基づいて名前が付けられます。 $row が結果セット内の行の場合、 $row["JokeText"] はその行の JokeText 列の値になります。したがって、データベースにあるジョークのテキストを表示したい場合、while ループは次のようになります:


while ( $row = mysql_fetch_array($result) ) {
echo ("< ;P>" . $row["JokeText"] . "

");
}



最後に、要約として、これは完全な PHP データベースに接続し、データベース内のすべてのジョークのテキストを取得し、HTML で表示するために使用される Web ページのコード:




ジョークのリスト
</HEAD>


// データベースサーバーに接続します
$dbcnx = @mysql_connect("localhost",
"root ", "mypasswd");
if (!$dbcnx) {
echo( "

gt;現在、「 .
」データベース サーバーに接続できません。

" );
exit();
}

// ジョーク データベースを選択します
if (! @mysql_select_db("jokes") ) {
echo( "

ジョーク「 .
"現時点ではデータベースが見つかりません。

" );
exit();
}

?>



// すべてのジョークのテキストをリクエストします
$result = mysql_query (
「ジョークからジョークテキストを選択」);
if (!$result) {
echo("

gt;クエリ実行エラー: " .
mysql_error() . " exit();
}

// 各ジョークのテキストを段落に表示します
while ( $row = mysql_fetch_array($result) ) {
echo("

" . $row["JokeText"] . "

");
}
?>






方向データ据库中插入据

在这一节里,我们会看到我们会 このツールをどのように利用するか私たちのサイトのユーザーが自分自身の笑いのメッセージをデータベースに追加したことを確認してください。もしあなたが挑戦することを喜んでいるのであれば、このプロジェクトはこのサイトで少しだけ行われていると考えられます。

もし私たちが新しい笑い文を入力できるようにしたい場合は、最初に表が必要です、それがこの表です。单的代番号:



ここにジョークを入力してください:








正如我们上面看到那样,这个表单在(表の ACTION プロパティで $PHP_SELF 量を使用したため) 取引時に同じ页面にロードされますが、再ロード時のリクエストには 2 つの量が含まれています。最初は $joketext で、これはテキストフィールドでの入力です。の笑言葉の正文、もう 1 つは $submitjoke です。この量の値は "SUBMIT" で始まり、笑言葉が交換されたことを示すために使用されます。 mysql_query を使用して INSERT メッセージを実行します。このメッセージには既に提案された $joketext 变量の値が含まれます:


if ("SUBMIT" == $submitjoke) {
$sql = "INSERT INTO ジョーク SET " .
"JokeText='$joketext', " .
"JokeDate=CURDATE()";
if (mysql_query($sql)) {
echo("

gt ;あなたのジョークが追加されました。

");
} else {
echo("

gt;送信されたジョークの追加エラー: " .
mysql_error() . " }
}



すべての内容の中に SQL コードの中に新しいものが 1 つだけ表示されています。ここでは私が使用している MySQL 関数数CURDATE(実際、MySQL にはそのような関数が多数ありますが、完全な関数が得られるのは、他のユーザーが使用するときにのみ使用されるためです。





このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQLユーザーとデータベースの関係 MySQLユーザーとデータベースの関係 Apr 08, 2025 pm 07:15 PM

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

RDS MySQL Redshift Zero ETLとの統合 RDS MySQL Redshift Zero ETLとの統合 Apr 08, 2025 pm 07:06 PM

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

mysqlは支払う必要がありますか mysqlは支払う必要がありますか Apr 08, 2025 pm 05:36 PM

MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? 高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? Apr 08, 2025 pm 06:03 PM

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

MySQLのクエリ最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを改善するために不可欠です MySQLのクエリ最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを改善するために不可欠です Apr 08, 2025 pm 07:12 PM

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

mysqlをコピーして貼り付ける方法 mysqlをコピーして貼り付ける方法 Apr 08, 2025 pm 07:18 PM

MySQLのコピーと貼り付けには、次の手順が含まれています。データを選択し、Ctrl C(Windows)またはCMD C(MAC)でコピーします。ターゲットの場所を右クリックして、貼り付けまたはCTRL V(Windows)またはCMD V(MAC)を使用します。コピーされたデータは、ターゲットの場所に挿入されるか、既存のデータを置き換えます(データが既にターゲットの場所に存在するかどうかに応じて)。

mysqlを表示する方法 mysqlを表示する方法 Apr 08, 2025 pm 07:21 PM

次のコマンドでmysqlデータベースを表示します。サーバーに接続します:mysql -u username -pパスワードrun showデータベース。すべての既存のデータベースを取得するコマンド[データベース]を選択します。データベース名を使用します。テーブルを表示:表を表示します。テーブル構造を表示:テーブル名を説明してください。データを表示:[テーブル名]から[ *]を選択します。

酸性特性を理解する:信頼できるデータベースの柱 酸性特性を理解する:信頼できるデータベースの柱 Apr 08, 2025 pm 06:33 PM

データベース酸属性の詳細な説明酸属性は、データベーストランザクションの信頼性と一貫性を確保するための一連のルールです。データベースシステムがトランザクションを処理する方法を定義し、システムのクラッシュ、停電、または複数のユーザーの同時アクセスの場合でも、データの整合性と精度を確保します。酸属性の概要原子性:トランザクションは不可分な単位と見なされます。どの部分も失敗し、トランザクション全体がロールバックされ、データベースは変更を保持しません。たとえば、銀行の譲渡が1つのアカウントから控除されているが別のア​​カウントに増加しない場合、操作全体が取り消されます。 TRANSACTION; updateaccountssetbalance = balance-100wh

See all articles