-1
4

3 に答える 3

1

$_POSTキーを持たない配列からキーを参照することはできません。リクエストにこれらの値が投稿されていないため、配列からキーを参照しようとしています。

通知を取り除くには、以下から$_POST直接値を取得するすべての宣言を変更します。

$Surname = $_POST['surname'];

に:

$Surname = isset( $_POST['surname']) ? $_POST['surname'] : ""; // Some default value

また、コードに同じクエリを2回挿入しているように見えます。そして、VDPは良い点をもたらします。空の行を挿入したくないので、それを修正するには、挿入するロジック全体をifステートメントでラップするか、$_POSTが空かどうかを確認するか、すべての変数に挿入する前の有効な値。

編集:わかりました、より完全な説明。

配列にない配列からキーにアクセスしようとすると、この通知が表示されます。したがって、$_POST配列が空である可能性があります。これは、ページにアクセスしたときにPOSTリクエストを送信しなかったか、送信した場合は、期待する変数を送信しなかったためです。

だから$_POST次のようになります:

$_POST = array( );

そして、あなたはやろうとしています:

$Surname = $_POST['surname']; // DOESN'T EXIST!

明らかに、それはできません。したがって、から直接取得するのではなく、$_POSTそのキーが実際に$_POST配列に存在するかどうかを確認します。

$Surname = isset( $_POST['surname']) ? $_POST['surname'] : "";

ただし、これは次の略記です。

if( isset( $_POST['surname'])) { 
    $Surname = $_POST['surname'];
} else { 
    $Surname = "";
}

これは三項演算子と呼ばれ、PHPのドキュメントで調べて詳細を読むことができます。

于 2012-11-20T14:08:06.400 に答える
-2

それ以外の

$Surname = $_POST['姓'];

行う

if(isset($_POST['surname']))
{
     $Surname = $_POST['surname'];
}

または

$Surname = (isset($_POST['surname'])) ? $_POST['surname'] : $some_string; /* or something */

これらすべての投稿変数をローカライズするために、extract() を使用することもできます。

于 2012-11-20T14:13:30.423 に答える
-2

これらの通知がアプリケーションを台無しにしないことを完全に確信しており、迅速な修正が必要な場合は、使用してください

error_reporting(0);

または使用@$variable;

繰り返しますが、これは実際には解決策ではなく、一時的な応急処置です。

実際に修正するには、変数の存在を常に確認する必要があります。

echo $myvariable; // will output notice

$myvariable = null;

echo $myvariable; // will output nothing but nor the notice

良い方法は、次を使用することです。

if(isset($_POST['myvariable'])){
$myvariable = $_POST['myvariable'];
} else {
$myvariable = null;
}
于 2012-11-20T14:13:45.733 に答える