-1

この声明に何か問題はありますか?

エラーリターン:

注意:未定義のインデックス:inputBlock

注意:未定義のインデックス:inputHouseUnit

コード:

if($conn){
    $insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('$_POST[inputBlock]', '$_POST[inputHouseUnit]')";
}
4

6 に答える 6

1

PHP配列インデックスは、数値または文字列のいずれかです。

inputBlockおよびinputHouseUnitが文字列変数の識別子である場合は、それらの前に$(など$_POST[$inputBlock])を付ける必要があります。

リテラル文字列の場合は、'(一重引用符)または"(二重引用符)で囲みます(例:)$_POST["inputBlock"]

明らかに、一重引用符と二重引用符をエスケープすることに注意する必要があります。また、データベースに入力する前に、ユーザー入力を検証する必要があります。

于 2013-03-26T07:25:36.287 に答える
0

はいあります。このように見えるはずです

if($conn){
    $insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('" . $_POST["inputBlock"] . "', '" . $_POST["inputHouseUnit"] . "')";
}

文字列の連結を使用したので、引用符をエスケープする必要はありません。

生の投稿データをデータベースに渡すことは非常に危険であるため、セキュリティについても考慮する必要があります。ユーザーを信頼しないでください。

于 2013-03-26T07:27:05.903 に答える
0
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('".$_POST['inputBlock']."', '".$_POST['inputHouseUnit']."')";
于 2013-03-26T07:27:14.150 に答える
0

ここでの答えはすべて間違っています。inputBlockそして、それが配列インデックスとして認識されると明らかに述べられている質問とさえ矛盾します。

この声明に何か問題はありますか?

いいえ。あなたの声明は完全に有効です。

これらのメッセージを受け取る理由は、空の$_POST配列です。ほとんどの場合、このコードをGETメソッドで呼び出しています。

あなたのコードをこのifステートメントに入れてください:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // your code goes here
}

また、クエリは常に適切にフォーマットする必要があります。少なくともここで説明されている方法

于 2013-03-26T11:25:58.573 に答える
0

これらの変数がから供給されていることを確認してください

$ _POST [inputBlock] $ _POST [inputHouseUnit]

$sqlの前にそれらを印刷します。

また、method=POSTが指定されていることを確認してください。ない場合、これらの変数はGETとして取得されます。

于 2016-06-15T13:42:01.993 に答える
0

個々のpost操作の値を別々の変数に格納してから、echo関数で使用します...このように...

$x=$_POST[inputBlock];
<br>$y=$_POST[inputHouseUnit];

そして、echo関数内の変数を置き換えます。

$_POSTまた、postメソッドが値を受け取っているかどうかを確認します。これは、phpページに送信した値が1つだけである可能性があるためです...変数が配列から値を取得しない場合、未定義のインデックスはしばしば打ち消されます。

于 2017-05-23T08:27:22.443 に答える