この声明に何か問題はありますか?
エラーリターン:
注意:未定義のインデックス:inputBlock
注意:未定義のインデックス:inputHouseUnit
コード:
if($conn){
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('$_POST[inputBlock]', '$_POST[inputHouseUnit]')";
}
PHP配列インデックスは、数値または文字列のいずれかです。
inputBlock
およびinputHouseUnit
が文字列変数の識別子である場合は、それらの前に$
(など$_POST[$inputBlock]
)を付ける必要があります。
リテラル文字列の場合は、'
(一重引用符)または"
(二重引用符)で囲みます(例:)$_POST["inputBlock"]
。
明らかに、一重引用符と二重引用符をエスケープすることに注意する必要があります。また、データベースに入力する前に、ユーザー入力を検証する必要があります。
はいあります。このように見えるはずです
if($conn){
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('" . $_POST["inputBlock"] . "', '" . $_POST["inputHouseUnit"] . "')";
}
文字列の連結を使用したので、引用符をエスケープする必要はありません。
生の投稿データをデータベースに渡すことは非常に危険であるため、セキュリティについても考慮する必要があります。ユーザーを信頼しないでください。
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('".$_POST['inputBlock']."', '".$_POST['inputHouseUnit']."')";
ここでの答えはすべて間違っています。inputBlock
そして、それが配列インデックスとして認識されると明らかに述べられている質問とさえ矛盾します。
この声明に何か問題はありますか?
いいえ。あなたの声明は完全に有効です。
これらのメッセージを受け取る理由は、空の$_POST配列です。ほとんどの場合、このコードをGETメソッドで呼び出しています。
あなたのコードをこのifステートメントに入れてください:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// your code goes here
}
また、クエリは常に適切にフォーマットする必要があります。少なくともここで説明されている方法
これらの変数がから供給されていることを確認してください
$ _POST [inputBlock] $ _POST [inputHouseUnit]
$sqlの前にそれらを印刷します。
また、method=POSTが指定されていることを確認してください。ない場合、これらの変数はGETとして取得されます。
個々のpost操作の値を別々の変数に格納してから、echo
関数で使用します...このように...
$x=$_POST[inputBlock];
<br>$y=$_POST[inputHouseUnit];
そして、echo
関数内の変数を置き換えます。
$_POST
また、postメソッドが値を受け取っているかどうかを確認します。これは、phpページに送信した値が1つだけである可能性があるためです...変数が配列から値を取得しない場合、未定義のインデックスはしばしば打ち消されます。