0

初めて PHP/mySQL プログラムを実行していますが、アドバイスが必要な場合があります。

作成したいプログラムは次のように動作します... 何か問題が発生した場合にサーバーに送信するフォームになります。自分でフォームに記入できるようになりたい。その後、問題は他のコンピューターに表示されます。

mySQL データベースに書き込み、データベースに接続した後、次のコンピューターから読み取る必要があると思います。しかし、どうすればこれを最善の方法で行うことができますか?

XAMPP のダウンロードと mySQL でのテーブル作成に成功しました。情報を入力するフィールドと送信ボタンもあります。

次の場所でエラーが発生します。

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

注意: 未定義のインデックス: 21 行目の E:\xampp\htdocs\avvikelse.php の操作ステップ

Notice: Undefined index: E:\xampp\htdocs\avvikelse.php 行 22 の問題の詳細

注意: 未定義の変数: E:\xampp\htdocs\avvikelse.php の 25 行目の operation_step エラー: SQL 構文にエラーがあります。'step, Problem detail) VALUES ('', '',' at line 1

// blabla, connetcting...

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

$sql = "INSERT INTO avvikelsekort (Operation step, Problem detail) VALUES
('$operation_step', '$problem_detail')";

if (!mysql_query($sql)) {
        die('Error: ' .mysql_error());
}

mysql_close();
?>

あなたが言ったように、私は今マルコと私はArray(0) {}を取得しました私のフォームは次のようになります

    <form action="avvikelse.php" method="POST" />
    <p>Operation step: <input type="text" name"Operation step" /></p>
    <p>Problem detail: <input type="text" name"Problem detail" /></p>    
    <input type="submit" value="Submit" />
    </form>
4

4 に答える 4

2

フィールド名にスペースを使用する場合は、バッククォートを使用する必要があります。
さらに、変数を呼び出すと

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

あなたのクエリは

$sql = "INSERT INTO avvikelsekort (`Operation step`, `Problem detail`) VALUES
    ('$operationstep', '$problem_detail')";

最後になりましたが、SQL インジェクションを避けるために、常にユーザー入力をサニタイズする必要があることを忘れないでください。

EDITED :
フォームが間違っています。これを試して:

<form action="avvikelse.php" method="POST" />
    <p>Operation step: <input type="text" name="Operation step" /></p>
    <p>Problem detail: <input type="text" name="Problem detail" /></p>    
    <input type="submit" value="Submit" />
</form>
于 2012-07-11T07:25:14.673 に答える
1

Post/Get 名にスペースを含めることはできません。

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

試す

$operationstep = $_POST['Operation_step'];
$problem_detail = $_POST['Problem_detail'];

またはフォームでそれらの名前を変更します。

また:

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

行っている挿入と一致しません - 挿入で使用した変数名と、スペースを含む列名をどのように参照する必要があるかに注意してください。

$sql = "INSERT INTO avvikelsekort (`Operation step`, `Problem detail`) VALUES
('$operation_step', '$problem_detail')";
于 2012-07-11T07:26:30.780 に答える
0

未定義のインデックスは$_POST変数に存在しないため、通知が表示されます。インデックスにスペースを使用しないでください。フォームを編集し、入力フィールドの名前属性にアンダースコアを使用し、割り当て$operation_step中にクエリで使用します。$operationstepまた、クエリのテーブル名にバッククォートを使用します。

于 2012-07-11T07:29:58.737 に答える
0

$_POST他の人が答えたように、値が配列に存在しないという事実により、未定義のインデックスメッセージが表示されます。

データを変数に入れる前にデータをサニタイズすることをお勧めします。$_POST投稿データには、SQL インジェクション攻撃につながる可能性のある悪意のあるデータが含まれている可能性があるためです。https://www.owasp.org/index.php/OWASP_Guide_Projectで、他の安全な開発プラクティスを確認できます。

于 2012-07-11T07:43:46.780 に答える