検索
ホームページphp教程php手册PHP のデータベース接続 (1)

チュートリアル|データ|データベース|データベース接続

中盤 1: データベース接続

最初の 2 章は PHP 言語に焦点を当てていましたが、ここで停止してアプリケーションの作成を開始します。この章では、MySQL データベースに接続するアプリケーションを作成します。

前の 2 つの章を学習したら、PHP の内部データの処理方法とステートメントと関数の作成方法を学習したはずです。論理的に言えば、次のステップは SQL (構造化クエリ ステートメント) を使用して PHP の外部データを処理する方法を学ぶことです。しかし、本題に入る前に、基本原則から離れて、しばらくリラックスしましょう。
PHP アプリケーションの開発プロセスを見てみましょう。すべてのアプリは文字通り独自である必要がありますが、すべてのアプリは以前の成果、つまり一連の共通機能に基づいて構築されている必要もあります。これら 2 つのテクニックを組み合わせることをお勧めします。他人が書いた関数をやみくもに使用すると、プログラムから新しい機能を追加できなくなり、また、関数の効率を向上させるために古い関数を変更することもできなくなります。一方で、既存の機能を利用することで、より早くアプリケーションを開発できるようになります。したがって、優れたプログラマーになるためには、これら 2 つの両極端の間で自分自身を把握する必要があります。

注: HTML にまだ慣れていない場合は、今すぐ学習を始めてください。この本は、読者が HTML にすでに精通していることを前提としています。 HTML のテーブルやフォームに慣れていない場合は、すぐに混乱してしまうでしょう。

5.1 はじめに
新しいプロジェクトを開始するときは常に、新しい空のディレクトリから開始するのが好きです。ここでは、このディレクトリを phpbook/ch05 と呼びます。もちろん、このディレクトリは Web サーバーのルート ディレクトリに存在する必要があります。第 1 章の手順に従って PHP をインストールした場合、Web サーバーのルート ディレクトリは /usr/local/apache/htdocs になるはずです。次に、リスト 5.1 に示すように、バックグラウンド管理タスクのメニューを含む menu.php3 という名前のファイルを作成します。

リスト 5.1 menu.php3
>

管理メニュー



  1. データベースの作成


ファイル common.inc 内の関数 affy_header および affy_footer の定義が含まれています。これらの関数については、この章の後半で説明します。
5.2 接続の作成
「データベース接続の作成」をクリックすると、connect.php3 ファイルが実行され、第 2 章でインストールした MySQL データベース サーバーへの接続が試行されます。
リスト 5.2 は、ユーザー名コードビットとパスワード コードビットを使用してデータベース接続を試みている connect.php3 ファイルを示しています。MySQL のインストール時にユーザー名が作成されていないため、接続は失敗したと考えられます。少なくともこの場合、失敗は良いことです。問題に対処する方法がわかるからです。図 5.1 は、接続が失敗した後に表示されるエラー メッセージとフォームを示しています。

リスト 5.2 connect.php3

ページ 107 -108 リスト 5.2


ページ 108 図 5.1

図 5.1 接続失敗時のエラー メッセージ表示

データベース接続が失敗すると、プログラムはエラー メッセージと Aユーザーが root ユーザーのパスワードを入力できるフォーム。この章の後半で説明するように、root パスワードを使用すると、codebits という名前のユーザーを作成できます。ここでは、$arr_request 配列に関する部分をスキップしてください。
mysql_connect 関数が呼び出され、接続が失敗すると、通常、関数は次の情報を表示します:

警告: MySQL 接続失敗: アクセスが拒否されました
ユーザー: 'codebits@localhost' (パスワードの使用: YES)

ほとんどのアプリケーション プログラム特に高度にグラフィカルなアプリケーションでは、表示内容を正確に制御する必要があります。関数 mysql_connect の前に (@) 記号を追加すると、エラー メッセージの表示が抑制されます。
form ステートメントの action 属性は、送信ボタンがクリックされたときに connect.php3 ファイルが実行されることを指定していることに注意してください。これは再帰プログラムの例であり、PHP ファイルがそれ自体を呼び出すことができることを意味します。
再帰的プログラミング手法を適用すると、同じトピックのすべてのコードを同じファイルにコンパイルできます。どのような場合に関数を 1 つのファイルに結合するか、またはプログラムを複数のファイルに分割する必要があるかについては、経験に依存します。私の最初の経験則は、特定の関数の実装に必要なコードが 100 行を超える場合は、別のファイルを作成するということです。

5.3 HTML フォーム情報の取得
パスワードを入力してクリックしてデータベースに接続しても、connect.php3 がデータベース接続を確立するためにフォームの入力値を使用していないため、接続は失敗します。
PHP エンジンは、各フォーム フィールドを $HTTP_POST_VARS という配列に置きます。上記の例では、配列にはユーザー名とパスワードの 2 つの要素があります。このプログラムでは、$HTTP_POST_VARS['username'] および $HTTP_POST_VARS['password'] を通じてフォーム情報にアクセスできます。
$HTTP_POST_VARS['password'] を使用してフォーム内の情報を取得するのは比較的簡単に思えます。しかし、まだ隠れた問題がいくつかあります。まず、フォームフィールドの名前 (この例ではパスワード) が大文字か小文字か、あるいは両方であるかを確認します。
2 番目の質問の内容は、この例とはほとんど関係ありません。フォーム メソッドに加えて、URL を使用して PHP スクリプトを実行することもできます。例:

http://.../connect.php3?username=root&password=password

ご覧のとおり、ユーザー名とパスワードは次のとおりです。 URL を通して渡されます。疑問符「?」はドメイン情報の始まりを示し、「&」はドメインの区切り文字です。幸いなことに、PHP エンジンは URL 行も自動的に分析し、結果を $HTTP_GET_VARS 配列に保存します。
問題は (そう思われるのであれば)、プログラムが複数の場所 (配列 $HTTP_GET_VARS と配列 $HTTP_POST_VARS) から情報を取得できることです。
これら (およびその他) の問題に対する私の解決策は、2 つの $HTTP 配列から初期化情報を取得する $arr_request という配列を作成することです。 common.inc では、次のコーディング行を使用して、配列 $arr_repuest を数値的に初期化できます。

//
// URL ベース (get) パラメーターとフォーム ベース (post) パラメーターの両方を保持するリクエスト配列を宣言します
$arr_request = array();

// URL パラメーターとフォーム パラメーターを
に移動します。 // リクエスト配列は URL
// パラメータよりも優先されます。さらに、すべてのキーは小文字に変換されます
//
If (count($key, $value) ) = each ($HTTP_GET_VARS)) {
$arr_request[strto lower($key)] = $value;
}
}
if (count($HTTP_POST_VARS)) {
while (list($key, $value) = each ($HTTP_POST_VARS)) {
$arr_request[strto lower($key)] = $value;
}
}

common.inc ファイルがすべての PHP スクリプトに含まれている場合は、スクリプトが実行されます。渡されたすべての情報は配列 $arr_request に小文字で保存されます。つまり、$arr_request['username'] を使用してユーザー名情報を取得できます。
PHP は、配列 $HTTP_GET_VARS と配列 $HTTP_POST_VARS の代替を提供し、HTML フォームと URL ベースの情報に PHP 変数として直接アクセスできます。たとえば、PHP スクリプトでは、 として定義されたドメイン情報に $last_name を使用して PHP プログラム内で直接アクセスでき、同じ情報は URL に基づいてアクセスできます。たとえば、http://www.site.com?last_name=join は $last_name で取得できます。ただし、プログラムに渡されるすべての情報をループするのに非常に便利なため、私は配列 $arr_request を使用することを好みます。情報がスカラーの場合、ループには適していません。たとえば、Shift キーを使用してプログラムが破損しないように、すべてのパラメータ名を大文字に変更するか、エラー検出中にすべての入力パラメータを表示する必要があります。

注: このセクションでは CGI (Common Gateway Interface) プロトコルについて簡単に説明します。詳細については、本書の付録 A「インターネット リソース」に記載されている内容を参照してください。

5.4 HTML フォーム情報の使用
PHP スクリプトからフォーム情報に簡単にアクセスできるようになったので、この情報を使用してデータベースに接続します。最初のステップは、データベースに接続するためのコードを確認することです:

$id_link = @mysql_connect('localhost', 'affy', 'affy'); このコード行では、ユーザー名とパスワードは両方とも文字列です。価値観。フォーム内の情報を使用するには、値の代わりに変数を使用して、このコード行を変更する必要があります。

$id_link = @mysql_connect(
'localhost',
$username,
$password);変数を使用する場合は、変数を初期化する必要があります。次のコードはこの初期化を実行します:

if ( count($arr_request) ) {
$username = $arr_request['username'];
$password = $arr_request['password'];
else {
$ username = 'phpuser';
$password = 'phpuser';

フォーム情報が利用可能な場合、関数 count の結果は 1 より大きくなり、if ステートメントは true 条件節を実行します。ターンは $arr_request 配列から開始します。 ユーザー名とパスワードの情報を から取得します。
フォーム情報が存在しない場合でも、ユーザー名とパスワードを文字列値で初期化できます。
3 番目の可能性は、フォームにこれら 2 つのフィールドがあるものの、フォーム情報がない場合です。 connect.php3 を呼び出すフォームにユーザー名とパスワードのフィールドがない場合はどうなりますか?その場合、上記のコードは失敗します。 $arr_request 配列内の要素の数だけに依存するのではなく、フォーム フィールドを直接チェックすることで、このコードをより堅牢にする (つまり、この環境での障害を処理できるようにする) ことができます。例:

$username = $arr_request['username'];
$password = $arr_request['password'];

if (empty($username)) $username = 'phpuser'; $ パスワード)) $パスワード = 'phpuser';PHP は初期化されていない配列要素に対して空の文字列を返すため、上記のコードは適応性が高くなります。配列ではなくスカラーを使用すると、コードが理解しやすくなり、ある意味ではより効率的になります。これら 2 つの変数のいずれかが空の場合は、フォームに値が提供されていないことを意味し、デフォルト値が使用されます。
リスト 5.3 は、上記の変更を加えた connect.php3 ファイルを示しています。コンテキスト内でこれら 2 つの変更の説明を確認できます。

リスト 5.3 connect.php3 リビジョン

ページ 112 - 113 リスト 5.3


図 5.2 に示すように正しい root パスワードをフォームに入力すると、データベース接続が正常に確立されます。


ページ 113、図 5.2

図 5.2 データベース接続が正常に確立されたことを確認する

5.5 common.inc ファイル
リスト 5.4 は、この章で必要な common.inc ファイルのバージョンを示しています。

リスト 5.4 common.inc - 複数のアプリケーションで使用されるルーチンのセット。
function affy_footer() {
echo '
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター