1

いくつかの簡単な情報をデータベースに投稿するためのいくつかのPHPコードを含む簡単なフォームがあります。

データベースへの接続は、手動で入力した項目が希望どおりに表示されるため、問題ありません。でも。フォームからデータベースに投稿することができません。私は運がないのにたくさんのコードをいじくり回しました。誰かが私が欠けているものを見ますか?コードは次のとおりです。

<center>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST">

    <strong><h2><br><br>Enter in my guestbook!</h2></strong><br>
    <h3>Nickname:</h3><input type="text" name="guestbook_name" maxlength="25"><br>
    <h3>Write About Your Day:</h3><textarea name="guesbook_message" rows="6" cols="60"       maxlength="255"></textarea><br>
    <input type ="submit" value="POST">

</form>

<br>
<hr>
<br>

<?php

    if (mysql_connect('localhost', 'root', 'root') && mysql_select_db('mydb')) {

    //echo 'Connected to the database!';

    $time = gmdate("l dS \of F Y h:i:s A");
    $errors = array();

    if (isset($_POST['guestbook_name'], $_POST['guestbook_message'])) {

        echo 'Set data!';

        $guestbook_name = mysql_real_escape_string(htmlentities(     $_POST['guestbook_name'])); 
        $guestbook_message = mysql_real_escape_string(htmlentities(     $_POST['guestbook_message'])); 

        if (empty($guestbook_name) || empty($guestbook_message)) {
        $errors[] = 'All fields are required.';
        }

        if (strlen($guestbook_name)>25 || strlen($guestbook_message)>250){
        $errors[] = 'One or more fields exceeded the character limit!'; 
        }

        if (empty($erros)) {
            $insert = "INSERT INTO guestbook VALUES     ('','$time','$guestbook_name','$guestbook_message')";
            if (mysql_query($insert)){
                 header ('Location: '.$_SERVER['PHP_SELF']);
            } else {
                $errors[] = 'Something went wrong. Try again.';
            }

        } else {
            foreach($errors as $error) {
                echo'<p><strong>'.$error.'</strong></p>'; 
            }

        }

    }

    // display entries 
    $entries = mysql_query("SELECT timestamp, name, message FROM guestbook ORDER BY timestamp DESC");

    if (mysql_num_rows($entries)==0){
        echo 'No entries, yet.';
        } else { 
            //echo 'Entries found.'; 

            while ($entries_row = mysql_fetch_assoc($entries)){
                $entries_timestamp = $entries_row['timestamp'];
                $entries_name = $entries_row['name'];
                $entries_message = $entries_row['message'];
                echo '<p><strong>Posted by '.$entries_name.' on     '.$entries_timestamp.'</strong>:<br><br>'.$entries_message.'</p><br><br>';

            }
        }

} else {
    echo 'Could not connect at this time.';
} 


?>

</center>

私の主な問題はデータベースの提出です、どんな助けでも素晴らしいでしょう、ありがとう!

カイルB。

4

2 に答える 2

0

正しく挿入されているかどうかを確認するには、データベーステーブル構造とinsertsqlステートメントを確認する必要があります。

挿入に失敗する原因として最も可能性が高いのは、NOT NULLに設定されているフィールド値を設定していないことです(値を挿入しないか、空の/タイプミスの変数がある)。

しかし、より一般的な問題は次のとおりです。

wrong table or field names
not having the enough privelages on your database user account
于 2012-04-17T16:54:58.080 に答える
0

おそらくタイプミス?

if (empty($erros)) {

正しい名前は$errorsだと思います(Rに注意してください)

于 2012-04-17T16:56:28.777 に答える