-2

Web サイトのゲストブックを作成しています。while ループを使用してテーブルから行を取得しています。echo を使用すると、実際に保存されているコンテンツではなく、行の名前が返されます。何が間違っているのかわかりません。ここにPHPがあります:

    <?php

if(mysql_connect('localhost','root','')&& mysql_select_db('m_database')){
$time= time();
$errors =array();

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

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



    if ( empty($guestbook_name) || empty($guestbook_email) || empty ($guestbook_message)) {
        $errors[]='all fields must be completed.';
    }

if (strlen($guestbook_name)>25 || strlen($guestbook_email)>255 || strlen($guestbook_message)>255) {
    $errors= 'some of your fields exceeded the character limit, please double check.';
}
if ( empty($errors)){
    $insert = "INSERT INTO guestbook VALUES('','$time','$guestbook_name','$guestbook_email','$guestbook_message') ";

        if ( mysql_query ($insert)) {
            header('location: '.$_SERVER['PHP_SELF']);//redirect the user back to the same page, for spam purposes
        }else {
            $errors[] ='something is not working please try again';
        }

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

}
//set values form the form
//displaying the data
//using a while loop to display data on page
$entries =mysql_query("SELECT 'timestamp','name','email','message' FROM 'guestbook' ORDER BY 'timestamp'DESC");
if (mysql_num_rows($entries)==0){
    echo 'no entries found';

}else {
    while($entries_row = mysql_fetch_assoc($entries)){
        $entries_timestamp =$entries_row['timestamp'];
        $entries_name =$entries_row['name'];
        $entries_email =$entries_row['email'];
        $entries_message =$entries_row['message'];


            echo entries_name.'<br>';
                  echo $entries_message. '<br>';
                echo $entries_email. '<br>';
        }
    }


    } else {
    echo 'could not connect to database';
    }

    ?>
4

1 に答える 1

2

テーブルや使用されたクエリに関する情報が含まれていないため、変数名に基づいて推測しています。お探しのコンテンツは「メッセージ」欄に保存されていますか?もしそうなら、あなたは間違った変数をエコーし​​ています。代わりに $entries_message 変数を調べてみてください。

アップデート:

完全なクエリを投稿したので、問題がわかりました。問題は、必要な列を引用符で囲んでいることです。これは、MySQL クエリ エンジンにこれらの文字列を返すように指示し、実際には列データを返しません。SELECT 句から引用符を削除すると、期待どおりに機能するはずです。

クエリの行は次のようになります。

$entries = mysql_query( "SELECT timestamp, name, email, message FROM guestbook ORDER BY timestamp DESC" );
于 2012-12-31T17:02:08.413 に答える