2016-04-02 7 views
1

私は現在、夏の間、プロジェクトのためにPHPとmySQLを学習しています。私は4つのテキストフィールドをmySQLテーブルに格納するHTMLフォームを作成しようとしています。これは私が使用しているコードです:なぜ私のコードは2つ以上のデータフィールドを格納しませんか?

HTMLフォーム

<form action="postEvent.php" method="post"> 
    Name: 
    <input type="text" name="Name" /> 
    Date: 
    <input type="text" name="Date" /> 
    Time: 
    <input type="text" name"Time" /> 
    Description: 
    <input type="text" name"Description" /> 
    <input type="submit" value="Submit"> 
</form> 

PHPアクション

// Create connection 
$link = mysqli_connect('localhost', 'root', '******', 'myDB'); 

// Check connection 
if ($link->connect_error) { 
    die("Connection failed: " . $link->connect_error); 
} 

$iName = mysqli_real_escape_string($link, $_POST['Name']); 
$iDate = mysqli_real_escape_string($link, $_POST['Date']); 
$iTime = mysqli_real_escape_string($link, $_POST['Time']); 
$iDescription = mysqli_real_escape_string($link, $_POST['Description']); 
$sql = "INSERT INTO events " 
    . "(Name,Date,Time,Description)" 
    . " VALUES ('$iName','$iDate','$iTime','$iDescription')"; 

if (mysqli_query($link, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $link->error; 
} 

$link->close(); 

私は、Microsoft WebMatrixのを使用して自分のデータベースを設定し、私はそれをローカルに実行していますよ私のマシンから。データベース内の各フィールドは同じデータ型を使用します。

私の問題は、コードを実行すると最初の2つのテキストフィールドだけが格納されるということです。時間と説明は空白として表に提出されます。

+0

追加しますprint_r($ _ POST)Postevent.php私はここに

<form action="postEvent.php" method="post"> Name: <input type="text" name="Name" /> Date: <input type="text" name="Date" /> Time: <input type="text" name="Time" /> Description: <input type="text" name="Description" /> <input type="submit" name="submit" value="Submit"> </form> 

と送信ボタンでname="submit"を追加することですpostEvent.phpの一番上に表示され、質問に出力されます。 –

+0

'$ sql =" INSERT INTOイベント(名前、日付、時刻、説明) ( '$ iName'、 '$ iDate'、 '$ iDescription') ';'はより良い –

+0

@MawiaHL 私は両方の提案を追加し、いくつかのランダムなテキストを入力して、次のページを印刷しました: _Array([Name] => hjjhgjh [Date] => kljklj)新しいレコードが正常に作成された_ –

答えて

1

フォームは次のようになります。

if(isset($_POST['submit'])){ 
     $mysqli = new mysqli("localhost", "root", "my_password", "myDB"); 
     $name = isset($_POST['Name'])? $_POST['Name']:''; 
     $date= isset($_POST['Date'])? $_POST['Date']:''; 
     $time= isset($_POST['Time'])? $_POST['Time']:''; 
     $des= isset($_POST['Description'])? $_POST['Description']:'';  

     if(empty($name)){ 
     $error = 'Enter Name'; 
     }elseif(empty($date)){ 
     $error = 'Enter date'; 
     }elseif(empty($time)){ 
     $error ='Enter time'; 
     }elseif(empty($des)){ 
     $error = 'Enter description'; 
     }else{ 
     $query = "INSERT INTO `events` (`Name`, `Date`, `Time`, `Description`) 
        VALUES (?,?,?,?)"; 
     $stmt = $mysqli->prepare($query); 
     $stmt->bind_param("ssss", $name, $date, $time,$des); 
     $stmt->execute(); 
     $stmt->close(); 
     } 
    } 

し、エラーがあるかどうかをチェックすることができます:

if(!empty($error)){ 
    echo $error; 
} 
+0

これは完全に動作します。ありがとうございます。 –

+0

受け入れるには、チェックアイコンをクリックしてください。 –

関連する問題