ホームページ  >  記事  >  バックエンド開発  >  PHP 初心者のための最も紛らわしい 14 の問題_PHP チュートリアル

PHP 初心者のための最も紛らわしい 14 の問題_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:57:35861ブラウズ

[1] ページ間で変数を転送することはできません。最新の PHP バージョンでは、取得、投稿、およびセッションの自動グローバル変数がオフになっているため、前のページから送信された変数を取得するには、$_GET['foo']、$_POST を使用します。 . ['foo'],$_SESSION['foo'] を取得します。もちろん、自動グローバル変数を on に変更することもできます (php.ini を reGISter_globals = On に変更します)。互換性を考慮して、新しい記述方法に慣れることをお勧めします。

【2】 Win32 で apache2 が get メソッドを使用して中国語パラメータを渡すと、エラーが発生します:

Test.php?a=Hello&b=Hello

パラメータを渡すと内部エラーが発生します

解決策: 「test.php?a=Hello&b=Hello」 php?a=".urlencode(Hello)."&b=".urlencode(Hello)

...................................

【3】セッションwin32 では正しく動作しません

php.ini デフォルト session.save_path = /tmp

これは明らかに Linux では設定であり、win32 では php がセッション ファイルを読み書きできないため、セッションが使用できなくなります。 sessionなどの絶対パス save_path = c:Windows emp

【4】エラー情報を表示する

php.iniのdisplay_errors = On、error_reporting = E_ALLの場合、すべてのエラーとプロンプトが表示されるようにするのがベストです。以前の PHP 記述方法を使用したエラー メッセージのほとんどは、未定義の変数に関するものでした。変数に値が割り当てられる前に、変数が呼び出されるときにプロンプ​​トが表示されます。解決策は、変数を検出またはシールドすることです。

例えば、$fooを表示するには、 if(isset($foo)) echo $foo または echo @$foo となります

【5】mail()はWin32ではメール送信できません

Linuxで設定したSendmailは送信可能ですwin32 では、メールを送信するには smtp サーバーを呼び出す必要があります。php.ini = ip //ip は検証機能のない smtp サーバーです (オンラインで見つけるのは難しい)

php がメールを送信するための最良の解決策。ソケットを使用する 転送サーバーを使わずに相手のメールサーバーに直接送信します。

【6】MySQLの初期インストール時にパスワードが設定されていない場合は、 update mysql.user setpassword="yourpassword" where user="root" を使用してパスワードを変更する必要があります

【7】ヘッダーは送信済みです

このエラーは通常、HEADER を使用するときに表示されます。次のような理由が考えられます。1. HEADER を使用する前に PRING または ECHO を実行した。2. 現在のファイルの前に空白行がある。ファイルを INCLUDE し、ファイルの最後に空白行または出力がある場合にも、このエラーが発生します。 !

【8】php.iniを変更しても変化なし

IISやApacheなどのWebサーバーを再起動すると、最新の設定が適用されます。

【9】phpは2003にインストールされています(ISAPIのインストール方法は専門家にアドバイスを求めています)

PHP4のphp4isapi.dllは2003と一部競合するようで、CGIモードでしかインストールできません

手順1、まず www.php.net をダウンロードします。 インストール プログラムで、php-4.2.3-installer.exe をインストールします。php-4.2.3 をインストールする前に、最新バージョンを見つけて IIS6.0 が起動していることを確認することもできます。 -installer.exe にアクセスできるようになります。インストール後、デフォルトの Web サイト --> アプリケーション構成に移動します。

ステップ 2: Web サービス拡張機能をクリック --> 新しい Web サービス拡張機能を作成します。

ステップ 3: 拡張子 --> php を追加します。

ステップ 4: php.exe へのパスを見つけて追加します。

ステップ5: 確認するだけです!

ステップ6: PHPサービス拡張機能を選択し、「許可」をクリックします。

【10】SQL文が機​​能せず、データベース操作が失敗する場合がある 最も簡単なデバッグ方法は、SQL文をエコーし​​て変数の値が取得できるかどうかを確認することです。

【11】include と require の違い

両者に大きな違いはありません。インクルードするファイルが存在しない場合、 include は通知を促し、その後次のステートメントの実行を続行します。致命的なエラーが発生して終了します。

私のテストによると、win32 プラットフォームでは、最初にインクルードされてから実行されるため、ディレクトリの混乱を引き起こす可能性がある、インクルードされたファイルに include ステートメントや require ステートメントを含めないことが最善です。 *nux では状況が異なる可能性がありますが、まだテストしていません。

ファイルを複数回インクルードしたくない場合は、include_once または require_once## を使用してドキュメント データの読み取りと書き込みを行うことができます。

関数 r($file_name) {
$filenum=@fopen($file_name,"r");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,file_name($file_name)); ;
@fclose($filenum);
$file_data;
関数 w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method); ($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
return $file_data;

【12】isset() と empty() の違い

どちらも変数をテストするために使用されますが、isset() は変数に値が割り当てられているかどうかをテストし、empty() は値が割り当てられている変数が空かどうかをテストします。

値を割り当てずに変数を PHP で参照する場合は許可されますが、変数に null 値が割り当てられている場合は、$foo="" または $foo=0 または $foo= という通知プロンプトが表示されます。 false の場合、空 ($foo) は true を返し、isset($foo) も true を返します。つまり、null 値を代入しても変数の登録は解除されません。

変数の登録を解除するには、unset($foo) または $foo=NULL を使用できます

【13】Mysql のクエリ文にはキーワードが含まれています

PHP が mysql にクエリを実行するとき、mysql のテーブル名またはカラム名にキーワード word、この時点ではクエリにエラーが発生します。たとえば、テーブル名が order の場合、クエリ中にエラーが発生します。簡単な方法は、SQL ステートメントのテーブル名または列名に `[タブ キーの上] を追加して区別することです。たとえば、select です。 * `order` より

【14】HTTP プロトコル経由 複数のファイルを一度にアップロードする方法

同じ方法を 2 つ実装した 2 つのアイデアがあります。具体的な手順は依然として自分で設計する必要があります。

1. 以下のように、フォーム内に複数のファイル入力ボックスを設置し、配列で名前を付けます:

<form action="" method=post>
<input type=file name=usefile[]>
<input type =file name=usefile[]>
<input type=file name=usefile[]>
</form>

このようにして、サーバー側で次のテストを行います。 print_r($ _FILES);
echo "</pre>";

2. 次のように、名前を変えて複数のファイル入力ボックスを設定します。 input type=file name=usefile_a>
<input type=file name=usefile_b>
<input type=file name=usefile_c>
</form>

サーバー側でも同じテストを行います:

echo "

print _r( $_FILES); <br>
<br>
<br><br><br>http://www.bkjia.com/PHPjc/317807.html<br><br>www.bkjia.com<br><br>tru​​e<br><br>http://www.bkjia.com/PHPjc/317807.html<p align="left">技術記事</p><div style="display:none;">
<span id="url" itemprop="url"> [1] 変数の get、post、session はページ間で転送できません。最新の PHP バージョンでは、自動グローバル変数がオフになっているため、前のページから送信された変数を取得するには、$_GET['foo'... を使用します。 </span><span id="indexUrl" itemprop="indexUrl"></span><span id="isOriginal" itemprop="isOriginal">
</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl"></span>
</div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。