3 に答える
$_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のドキュメントで調べて詳細を読むことができます。
それ以外の
$Surname = $_POST['姓'];
行う
if(isset($_POST['surname']))
{
$Surname = $_POST['surname'];
}
または
$Surname = (isset($_POST['surname'])) ? $_POST['surname'] : $some_string; /* or something */
これらすべての投稿変数をローカライズするために、extract() を使用することもできます。
これらの通知がアプリケーションを台無しにしないことを完全に確信しており、迅速な修正が必要な場合は、使用してください
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;
}