0

私は単純な PHP フォームに取り組んでいますが、少し奇妙な問題に直面しています。ローカルの MAMP 環境とホストされている Web サイトの両方で発生しています。このスクリプトの目的は、次のフォームから送信されたデータに基づいて、レコードをテーブルに格納することです。

<?php
    include("dbconnect.php");
    if(isset($_POST['submit']){
        $firstName = $_POST['firstName'];
        $SQLString = "INSERT INTO name_table (first_name) VALUES($firstName)";
        mysql_query($SQLString);
    } else {
        //Debugging script
        $mypostdata = file("php://input");
        print "<pre>"; 
        var_dump($_POST);
        var_dump($mypostdata);
        print "</pre>";
    }
?>

<form name="myForm" action="<?php $_SERVER['PHP_SELF']?>" method="POST">
    <label for="firstName">First Name:</label>
    <input type="text" name="firstName" value="Bob" />
    <input type="submit" name="submit" value="Finish">
</form>

出力に var_dump を使用すると、次のようになり$_POSTます。

array(2) {
  ["firstName"]=>
  string(3) "Bob"
  ["submit"]=>
  string(6) "Finish"
}

var_dump on の$mypostdata = file("php://input");結果は次のようになります。

array(9){
    "name=Bob&submit=Finish"
}

フォームを送信すると、テーブルにレコードが作成されません。

編集:$_POST['myForm']明確にするために、私は当初、名前が出てくる とエラーが発生したと思っていましNULLたが、コメントと回答によりそれが解消されました。

4

3 に答える 3

1

http://www.w3.org/TR/html401/interact/forms.html#successful-controls

フォーム自体は「成功したコントロール」としてリストされていないため (17.2.1 を参照)、その名前を送信するべきではありません。

于 2013-08-15T23:07:48.003 に答える
0

first_name が varchar の場合、MySQL クエリで一重引用符で囲む必要があります。例えば:

"INSERT INTO name_table (first_name) VALUES('$firstName')";
于 2013-08-16T01:17:15.887 に答える