検索
ホームページバックエンド開発PHPチュートリアル犯しやすい PHP の小さな間違いとそれに対応する分析

プログラムを書くときは、経験豊富なプログラマーでも間違いを犯すことは避けられません。ただし、開発者がこれらのエラーに気付かず、コンパイラ エラー メッセージの意味を理解できない場合、これらのエラー メッセージは役に立たないだけでなく、イライラさせることもよくあります。
エラー メッセージをよりよく理解すると、誤ったコンテンツを見つけて修正するのに費やす時間を大幅に節約できます。そこでこの記事では、PHP プログラムを作成するときによくある間違いと、さまざまな種類の PHP エラー メッセージとその意味を紹介します。また、この記事で説明する内容は使用するPHPのバージョンとは関係ありません。 PHP 学習コンテンツの詳細については、「プログラム内の変数に適切な名前を付ける方法」、「24 の便利な PHP クラス ライブラリ」、および「PHP 配列の詳細な解釈」を参照してください。
コンパイラーが特定の行でエラーを報告する理由を理解するには、まずコンパイラーが PHP コードを解析するメカニズムを理解する必要があります。
変数宣言
次のようにステートメントで変数を宣言すると、
$var = 'value';
コンパイラーは最初にステートメントの右半分の値を見つけます。エラーが発生します。間違った構文を使用すると、解析エラーが発生します。

解析エラー
たとえば、解析エラー: 解析エラー、c:program filesapache groupapachehtdocsscript.phpの19行目で予期しないT_WHILE
前のエラーが特定されるたびに解析エラーが次々と表示され、最初のエラーでPHPが停止しますエラーを解析した後にスクリプトを実行します。また、解析エラーの情報はほとんどなく、エラーが発生した行番号はほとんど報告されません。たとえば、定義済みのキーワードが式で使用されている場合、たとえば、 while = 10; while は定義済みのキーワードであるため、値を割り当てることはできません。事前定義されたキーワードには、while、function などが含まれます。これらの事前定義されたキーワードを変数の名前に使用することはできません。使用しないと、コンパイラによってエラーが報告されます。このうち、T_IFはif()、T_WHILEはwhile()、T_FORはfor()などを表します。

一般的なエラー
ステートメントがセミコロン (;) で終わっていない、文字列内の引用符が欠落しているなど、一般的なエラーもいくつかあります。さらに、関数やループを終了するために中括弧 ( } ) を使用することはありません。例:
function UselessFunction() {
for($i
は次のエラーを生成します:
解析エラー: 解析エラー、c:program filesapache groupapachehtdocsereg2.php の 9 行目に予期しない $ があります
関数 UselessFunction は中括弧 (}) で終わっていないため、PHP コンパイラは引き続き検索しますファイルに到達するまで右中括弧を最後まで続けます。コンパイラは一致する中括弧を見つけられないため、ファイルの終わりエラーを報告します。
コードの階層が正しく反映されていれば、エラー メッセージが非常に明確になります。そうしないと、コードのデバッグが非常に困難になります。したがって、コードの階層構造を必ず示すようにしてください。これにより、後続の開発者がコードを改善しやすくなります。

MySQL エラー
別のタイプのエラー メッセージは MySQL エラーです。これは、PHP 初心者に次のような頭痛の種を引き起こすことがよくあります。
警告: 指定された引数は有効な MySQL 結果リソースではありません...
上記で報告されたエラー行は次のようになります:
while($row = mysql_fetch_array($result)) {}
パラメータ $result は有効なリソースではありません。クエリが失敗し、mysql_fetch_array が処理されないためです。クエリの構文が無効であるか、データベースへの接続が失敗する場合は、MySQL コンソールにアクセスしてテストする必要があります。

その他のよくある間違い

1. echo と print の違いに注意してください
PHP では、echo と print は両方とも出力に使用されますが、この 2 つにはまだ微妙な違いがあります。 echo出力後の戻り値はありませんが、printには戻り値があり、実行失敗時にfalseを返します。したがって、通常の関数として使用できます。たとえば、 $r = print "Hello World"; を実行すると、変数 $r の値は 1 になります。さらに、コード内の echo ステートメントは print ステートメントよりもわずかに高速に実行されます。

2. 空の文字列 ('') と NULL の違いに注意してください
PHP では、空の文字列と NULL はどちらも値 0 で格納されますが、前者は文字列、後者は型が異なります。 NULL、文字列 ('') と NULL 値は同じですが、型が異なります。

3. == (等しい AND) と === (一致する AND) の違いを区別します
どちらも比較演算子で、== (等しい) は値が等しいかどうかのみを比較しますが、=== (一致する AND) ) 値が等しいかどうかを比較するだけでなく、型が等しいかどうかも比較します。これはより厳密です。

4. include と require の違いを区別する
include() と require() は基本的に同じ関数ですが、include() は条件付き包含関数であるのに対し、require() は無条件包含関数です。関数 。たとえば、次のコードでは、変数 $a が true の場合、ファイル a.php がインクルードされます。
if($a){
include("a.php")
}
そして、require() は次のようになります。 include() と同じですが、$a の値に関係なく、次のコードにはファイル a.php がインクルードされます。
if($a){
require("a.php")
}
エラー処理は、include ステートメントを使用します。 include エラーが発生した場合、プログラムは include ステートメントをスキップします。エラー メッセージが表示されますが、プログラムは実行を続行します。ただし、require ステートメントでは致命的なエラーが発生します。

5. isset と empty の違いに注意してください
empty は変数が「空」かどうかを判断するのに対し、isset は変数が設定されているかどうかを判断します。

6. self :: と this--> の違いを区別する
PHP クラスのメンバー変数またはメソッドにアクセスするとき、参照される変数またはメソッドが const (定数) または static (静的プロパティ) として宣言されている場合、ドメイン演算子:: を使用する必要があり、参照される変数またはメソッドが const または static として宣言されていない場合は、ポインティング演算子 -> を使用します。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

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

DVWA

DVWA

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