0

タイトルの通り、「トピックを表示できませんでした。しばらくしてからもう一度お試しください。」エラーメッセージが表示されますが、データは mysql テーブルに正常に挿入されていますが、表示されない理由がわかりません。これが私の結果ページです。

<?php
include 'core/init.php';
include 'includes/overall/header.php';

$sql = "SELECT 'topic_id', 'topic_subject', 'category', 'sub_category', 'posted_by', 'posted', 'view', 'reply' FROM `topics`
    WHERE topics.topic_id = " . mysql_real_escape_string($_GET['id']);

$result = mysql_query($sql);

if(!$result)
{
echo 'The topic could not be displayed, please try again later.';
}
else
{
if(mysql_num_rows($result) == 0)
{
    echo 'This topic doesn&prime;t exist.';
}
else
{
    while($row = mysql_fetch_assoc($result))
    {
        $posts_sql = "SELECT 'posts.post_topic', 'posts.post_content', 'posts.post_date', 'posts.post_by', 
                             'users.user_id', 'users.username', 'users.profile'
                FROM
                    `posts`
                LEFT JOIN
                    `users`
                ON
                    posts.post_by = users.user_id
                WHERE
                    posts.post_topic = " . mysql_real_escape_string($_GET['id']);

        $posts_result = mysql_query($posts_sql);

        if(!$posts_result)
        {
            echo '<tr><td>The posts could not be displayed, please try again later.</tr></td></table>';
        }
        else
        {

            while($posts_row = mysql_fetch_assoc($posts_result))
            {
                include("includes/results-template.php");

            }
        }

        if(!$_SESSION['signed_in'])
        {
            echo '<tr><td colspan=2>You must be <a href="signin.php">signed in</a> to reply. You can also <a href="signup.php">sign up</a> for an account.';
        }
        else
        {
            //show reply box
            echo '<tr><td colspan="2"><h2>Reply:</h2><br />
                <form method="post" action="reply.php?id=' . $row['topic_id'] . '">
                    <textarea name="reply-content"></textarea><br /><br />
                    <input type="submit" value="Submit reply" />
                </form></td></tr>';
        }

        //finish the table
        echo '</table>';
    }
}
}
?>
<?php include 'includes/overall/footer.php'; ?>
4

1 に答える 1

0

一重引用符で列を選択してはいけませんが、代わりにバッククォートで列を選択する必要があります。

クエリを次のように変更します

    $sql = "SELECT `topic_id`, `topic_subject`, `category`, `sub_category`, `posted_by`, `posted`, `view`, `reply`  FROM `topics`
WHERE topics.topic_id =  '".mysql_real_escape_string($_GET['id'])."' ";

また、このクエリ$posts_sqlを次のように変更します。

        $posts_sql = "SELECT posts.post_topic, posts.post_content, posts.post_date, posts.post_by, users.user_id, users.username, users.profile
            FROM
                `posts`
            LEFT JOIN
                `users`
            ON
                posts.post_by = users.user_id
            WHERE
                posts.post_topic = '" . mysql_real_escape_string($_GET['id'])."' ";

バッククォート ` と シングル クォート ' の間には違いがあります。

于 2013-07-13T12:17:02.940 に答える