0

私は、categories.php というページにリンクするインデックス ページを持っています。categories.php では、フォーラム サイトのそれぞれの異なるカテゴリに、その ID (cat_id) に基づく一意の URL があります。ただし、この URL をその名前 (cat_name) に基づいて変更したいと考えています。ただし、これを行うと、「カテゴリを表示できませんでした。後でもう一度試してください。不明な列 'thenameofacategory' in 'where clause'」というエラーが表示されます。これは、cat_id が主キーであるという事実によるものですか? を交換するにはどうすればよいですか

       <a href="category.php?id=' . $row['cat_id'] . '">

cat_name を使用して、category.php ページでエラーが発生しないようにしますか?

index.php からの抜粋 (重要な部分):

        echo '<tr>';
            echo '<td class="leftpart">';
                echo '<h3><a href="category.php?id=' .                        $row['cat_id'] . '">' . $row['cat_name'] . '</a></h3>' . $row['cat_description'];
            echo '</td>';
            echo '<td class="rightpart">';

            //fetch last topic for each cat
                $topicsql = "SELECT
                                topic_id,
                                topic_subject,
                                topic_date,
                                topic_cat
                            FROM
                                topics
                            WHERE
                                topic_cat = " .  $row['cat_id'] . "
                            ORDER BY
                                topic_date
                            DESC
                            LIMIT
                                1";

                $topicsresult = mysql_query($topicsql);

                if(!$topicsresult)
                {
                    echo 'Last topic could not be displayed.';
                }
                else
                {
                    if(mysql_num_rows($topicsresult) == 0)
                    {
                        echo 'no topics';
                    }
                    else
                    {
                        while($topicrow = mysql_fetch_assoc($topicsresult))
                        echo '<a href="topic.php?id=' . $topicrow['topic_id'] . '">' . $topicrow['topic_subject'] . '</a> at ' . date('d-m-Y', strtotime($topicrow['topic_date']));
                    }
                }
            echo '</td>';
        echo '</tr>';
    }

ここにページcategory.phpがあります:

      <?php
      //category.php
      include 'connect.php';


      //first select the category based on $_GET['cat_id']
      $sql = "SELECT
        cat_name,
        cat_id,
        cat_description
    FROM
        categories
    WHERE
        cat_id = " . mysql_real_escape_string($_GET['id']);

      $result = mysql_query($sql);

      if(!$result)
      {
echo 'The category could not be displayed, please try again later.' .                     mysql_error();
      }
      else
      {
  if(mysql_num_rows($result) == 0)
  {
    echo 'This category does not exist.';
  }
  else
  {
    //display category data
    while($row = mysql_fetch_assoc($result))
    {
        echo '<h2>Topics in &prime;' . $row['cat_name'] . '&prime;           category</h2><br />';
    }

    //do a query for the topics
    $sql = "SELECT  
                topic_id,
                topic_subject,
                topic_date,
                topic_cat
            FROM
                topics
            WHERE
                topic_cat = " .           mysql_real_escape_string($_GET['id']);

    $result = mysql_query($sql);

    if(!$result)
    {
        echo 'The topics could not be displayed, please try again later.';
    }
    else
    {
        if(mysql_num_rows($result) == 0)
        {
            echo 'There are no topics in this category yet.';
        }
        else
        {
            //prepare the table
            echo '<table border="1">
                  <tr>
                    <th>Topic</th>
                    <th>Created at</th>
                  </tr>';   

            while($row = mysql_fetch_assoc($result))
            {               
                echo '<tr>';
                    echo '<td class="leftpart">';
                        echo '<h3><a href="topic.php?id=' .           $row['topic_id'] . '">' . $row['topic_subject'] . '</a><br /><h3>';
                    echo '</td>';
                    echo '<td class="rightpart">';
                        echo date('d-m-Y',           strtotime($row['topic_date']));
                    echo '</td>';
                echo '</tr>';
            }
        }
    }
}
    }

    ?>

cat_id が主キーであるという事実から、cat_name を WHERE 句の URL および行として使用できませんか?

ありがとう!

4

1 に答える 1

2

category.php で、次のように変更します。

WHERE cat_id = " . mysql_real_escape_string($_GET['id']);

WHERE cat_name = '" . mysql_real_escape_string($_GET['id']) ."'";

問題は、コードの最初の行で、cat_id が整数である可能性があるのに、cat_name が文字列であることです。あなたがしたとき、cat_id = $_GET['id']それはやろうとしていましたが、そうではcat_id = somecatnameありませんでしたcat_id = 'somecatname'

于 2012-06-03T19:16:00.107 に答える