我目前正在为一个小项目建立一个简单的论坛。我有一个名为forum.php的页面。此页面包含一个人登录后可以看到的内容。此页面包含以下代码:
<?php
include ('databaseconnect.php');
$query = "select * from Categories";
$result = mysqli_query($db,$query);
while ($row = mysqli_fetch_array($result)) {
echo '<tr>';
echo '<td class="leftpart">';
echo '<h3><a href="category.php?id">' . $row['Categoryname'] .
'</a></h3>' . $row['Categorydescription'];
echo '</td>';
echo '<td class="rightpart">';
echo '<a href="topic.php?id=">Topic subject</a> at 10-10';
echo '</td>';
echo '</tr>';
}
$result = $db->query($query);
?>
当某人点击任何类别链接(例如“社区活动”)时,会将他们带到名为category.php的页面。现在,在此页面上,我希望他们能够看到为特定类别创建的主题的概述。所以使用了以下代码:
<?php
include ('databaseconnect.php');
$sql1= "SELECT Categoryid, Categoryname, Categorydescription
FROM Categories
WHERE Categoryid= '" . mysqli_real_escape_string($db,$_GET['id'])."'";
$result1= mysqli_query($db,$sql1);
if(!$result1)
{
echo "<font color = 'Red' .<p> Category Cannot be displayed, Contact the
administrator </p> </font>". mysqli_error($db);
}
if(mysqli_num_rows($result1) == 0)
{
echo "<font color = 'Red' .<p>This category does not exist.</p> </font>".
mysqli_error($db);
}
while($row = mysqli_fetch_assoc($result1))
{
echo '<h2>Topics in ′' . $row['Categoryname'] . '′ Category</h2>';
}
?>
所以我遇到的具体问题是,当我点击任何链接时,我收到的错误是我定义的:
'This category does not exist'
所以,我尝试将categories.php页面的id更改为1,并得到以下结果:
但当我点击健康与健身类别而不是说'健康与健身'类别中的主题时,它仍然会说'社区活动类别中的主题'。因此,我将id更改为2,而相反的结果是在两页上都显示了“健康与健身”类别中的“主题”。所以我必须使id成为动态的解决方案,或者是否存在语法错误。非常感谢您的帮助。
答案 0 :(得分:0)
您没有将类别ID发布到“类别”页面。如果你将它设置为静态id = 2,那么你得到错误的标题是正常的。
您必须动态创建包含ID的链接
更改此行:
echo '<h3><a href="category.php?id">'.$row['Categoryname'].'</a></h3>'.$row['Categorydescription'];
到
echo '<h3><a href="category.php?id='.$row['Categoryid'].'">'.$row['Categoryname'].'</a></h3>.$row['Categorydescription'];
另请查看Prepared Statements,因为您的代码容易受到sql注入攻击。 mysqli_real_escape_string不安全。