「PHP プログラミング」第 5 章中盤 1: データベース接続
|
第 5 章 中盤 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。次に、menu.php3 という名前のファイルを作成します。このファイルには、リスト 5.1 などのバックグラウンド管理タスク メニューが含まれています。 。
リスト5.1 menu.php3
php require('common. inc'); ?>
php affy_header('管理メニュー') ?>
管理メニュー h1>
ファイル common.incaffy_header 🎜> と affy_footer の定義。これらの関数については、この章の後半で説明します。 5.2
ol>
li>href="connect.php3"> データベース
接続を作成します/li>
ol> php
affy_footer() ?>
データベース接続の作成
データベース接続の作成 (データベース接続の作成) 接続時に、connect.php3 ファイルが実行され、この章でインストールされた への接続が試行されます。 2 MySQL データベース サーバーを学習します。 リスト5.2 は、ユーザー名 コードビットを使用した connect.php3 ファイルを示しています。 とパスワードcodebits は、MySQL をインストールした後、データベース接続を確立しようとしています。 の時点ではユーザー名が作成されていないため、接続に失敗したと考えられます。ただし、 -- の失敗は、少なくともこの場合 -- は良いことです。なぜなら、それを処理する方法がわかるからです。この質問。図 5.1 は、接続が失敗した後に表示されるエラー メッセージとフォームを示しています。
リスト5.2 connect.php3
ページ 107 -108 リスト 5.2
ページ 108 図 5.1
図5.1 接続失敗時のエラーメッセージ表示
データベース接続に失敗した場合、プログラムはエラー メッセージと、ユーザーが root ユーザー パスワードを入力できるフォームを表示します。この章の後半で説明するように、root パスワードを使用すると、 ユーザーという名前のコードビットを作成できます。ここでは、$arr_request 配列に関する部分をスキップしてください。
関数 mysql_connect が呼び出され、接続が失敗すると、通常、関数は次の内容を表示します。情報 :
警告: MySQL 接続失敗: ユーザーのアクセスが拒否されました
: 'codebits@localhost ' (パスワード使用: YES)
大部分のアプリケーション、特に高度にグラフィカルなアプリケーションでは、表示内容を正確に制御する必要があります。関数 mysql_connect の前に (@) シンボルを追加すると、エラー メッセージの表示が抑制されます。
form ステートメントの action 属性は、submit がいつ実行されるかを指定していることに注意してください。 ボタンをクリックすると、connect.php3 ファイルが実行されます。これは再帰プログラムの例であり、PHP ファイル自体を呼び出すことができることを意味します。
再帰プログラミング手法を使用すると、同じトピックに関連するすべてのコードを同じファイルにコンパイルできます。どのような場合に関数を 1 つのファイルに結合するか、またはプログラムを複数のファイルに分割する必要があるかについては、経験に依存します。私の最初のルールは、特定の関数を実装するコードが 100 行を超える場合は、別のファイルを作成するというものです。
5.3 HTMLフォーム情報を取得
パスワードを入力してクリックしても、データベース 、 connect.php3 がデータベース接続を確立するためにフォームの入力値をまだ使用していないため、接続は引き続き失敗します。 。
PHP エンジンは、各フォーム フィールドを $HTTP_POST_VARS という配列に入れます。上記の例では、配列には username と password の 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。 これら (およびその他) の問題に対処するための私の解決策は、初期化の取得から始まる $arr_request という配列を作成することです。 2 つの $HTTP 配列からの情報。 common.inc では、次のエンコード行ペア配列 $arr_repuest を使用できます。 > 数値の初期化を実行します。
//
// url ベース (get) とフォーム ベース (post) パラメーターの両方を保持するリクエスト配列を宣言します。 $
arr_request = array();
//
url とフォーム パラメーターを に移動します // フォーム パラメーターは
url を置き換えます。 // パラメータ。さらに、すべてのキーは
変換されます //
If (count($HTTP_GET-VARS)) {
While (list($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 は、array$HTTP_GET_VARS および array$HTTP_POST_VARS、 HTML の代替手段を提供します。 URL に基づく フォームと情報は、PHP 変数として直接アクセスできます。たとえば、PHP スクリプトでは、last_name"> として定義されています。 ; のドメイン情報は、$last_namePHP プログラムで直接アクセスできます。 🎜>、同様に URL に基づく情報 (例: http://www.site.com?last_name=join は、$last_name から取得できます。ただし、私は依然として array$arr_request, を使用することを好みます。これは、プログラムに渡されるすべての情報をループするのに非常に便利だからです。情報がスカラーの場合、ループには適していません。たとえば、Shift キーを使用してプログラムが破損しないように、すべてのパラメータ名を大文字に変更するか、エラー検出中にすべての入力パラメータを表示する必要があります。
注: このセクションでは、CGI (共通ゲートウェイ インターフェイス) プロトコルについて簡単に説明するだけです。詳細 詳細については、本書の付録 A、"インターネット リソース" にリストされているコンテンツ。
5.4
HTMLフォーム情報
PHP スクリプトからフォーム情報に簡単にアクセスできるようになりました。次は、この情報を使用してデータベースに接続します。最初のステップは、データベースに接続するためのコードを確認することです:
$
id_link = @mysql_connect('localhost'、'アフィ'、'アフィ');このコード行では、ユーザー名とパスワードは両方とも文字列値です。フォーム内の情報を利用するには、値の代わりに変数を使用して、このコード行を変更する必要があります: 'localhost
'、
$username、 $パスワード);
変数を使用するため、初期化する必要があります。次のコードはこの初期化を実行します:
if ( count($
arr_request
) ) { $username = $arr_request[ 'ユーザー名']; $パスワード = $
arr_request
['パスワード']; } else {
$ユーザー名 = 'phpuser';
$password = 'phpuser';
}
フォーム情報が利用可能な場合、関数
count
の結果は
1 より大きいため、if ステートメントは true 条件の句を実行します。これは $arr_request から始まり、配列からユーザー名とパスワードの情報を取得します。 フォーム情報が存在しない場合でも、ユーザー名とパスワードを文字列値で初期化できます。 3 番目の可能性は、フォームにこれら 2 つのフィールドがあるものの、フォーム情報がない場合です。 connect.php3を呼び出すフォームにユーザー名とパスワードがない場合フィールド、それはどうなるでしょうか?その場合、上記のコードは失敗します。このコードはより堅牢にすることができます (つまり、状況下でそのような障害を処理できるようになります)。例: $username = $arr_request['username'] $password = $arr_request
['password' ] ;
if (empty($username)) $username = 'phpuser
'; if (empty($password)) $password = 'phpuser
';
PHP
は初期化されていない配列要素に対して空の文字列を返すため、上記のコードはより適応性があります。配列ではなくスカラーを使用すると、コードが理解しやすくなり、ある意味では効率が向上します。これら 2 つの変数のいずれかが空の場合は、フォームに値が提供されていないことを意味し、デフォルト値が使用されます。 List5.3
は、上記の変更ファイルを含む connect.php3 を示していますでは、両方の変更の説明をコンテキストで確認できます。 リスト5.3 connect.php3改訂版
ページ 112 - 113

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
