Php 类别id未接收

Php 类别id未接收,php,pdo,Php,Pdo,我目前正忙于在PDO中获得一个论坛系统。我已经做了索引,我现在忙着分类,但奇怪的是我没有收到分类。当我在category.php?id=1上时,它表示该类别不存在。以下代码是用于接收类别id的部分 <?php $sql = $db->query("SELECT cat_id, cat_name, cat_description FROM

我目前正忙于在PDO中获得一个论坛系统。我已经做了索引,我现在忙着分类,但奇怪的是我没有收到分类。当我在category.php?id=1上时,它表示该类别不存在。以下代码是用于接收类别id的部分

  <?php
  $sql = $db->query("SELECT
                cat_id,
                cat_name,
                cat_description
            FROM
                categories
            WHERE
                cat_id = " . $_GET['id']);

$result = $sql->rowCount();

if(!$result)
{
    echo 'The category could not be displayed, please try again later.';
}
else
{
    if($sql || ($result== 0))
    {
        echo 'This category does not exist.';
    }?>
它显示了福特不存在的这类产品线。我不知道怎么了这张桌子是对的。这是桌子

我是PDO的初学者,所以可能这只是一个简单的错误,因为我不知道

对于那些想知道答案的人来说。下面是我现在使用的脚本:

    <?php
//first select the category based on $_GET['cat_id']
$sql = $db->prepare('SELECT cat_id, cat_name, cat_description
    FROM categories WHERE cat_id = :catid');
$sql->bindParam(':catid', $_GET['id'], PDO::PARAM_INT); 
$sql->execute();
$result = $sql->rowCount();


if($result === FALSE){
    echo 'The category could not be displayed, please try again later.';
}
elseif(count($result) === 0){
    echo 'This category does not exist.';
}
else{

使用行计数有什么意义? 如果你需要一个类别,为什么不把它取出来呢

请注意,您必须使用如上所示的准备好的语句。
您还必须按照

中的说明设置正确的错误报告,因为您使用的是PDO,所以应该使用准备好的查询。这真的很容易

$sql = $db->prepare('SELECT cat_id, cat_name, cat_description
    FROM categories WHERE cat_id = :catid');
$sql->execute(array(':catid' => $_GET['id']));
这将为您处理任何转义,并使您免受SQL注入的影响。接下来,您需要从刚才运行的SQL查询中获取数据:

$result = $sql->fetchAll(PDO::FETCH_ASSOC);
最后,您可以检查类别是否存在

if($result === FALSE){
    echo 'The category could not be displayed, please try again later.';
}
elseif(count($result) === 0){
    echo 'This category does not exist.';
}
else{
    echo 'Category found';
}

为什么要检查$sql | |$result==0?如果查询成功,将打印“此类别不存在!”@RocketHazmat,因为如果结果==0,则没有具有该id的类别,则该类别不存在,但请查看如果该类别确实存在会发生什么!如果类别退出,$result将不等于0,$sql将不为FALSE。因此,如果$sql | |$result==0,您将得到。如果是真的,那就错了。这是正确的,因此该类别不存在。即使它确实存在。你需要检查你的逻辑。我仍然得到类别不存在。
if($result === FALSE){
    echo 'The category could not be displayed, please try again later.';
}
elseif(count($result) === 0){
    echo 'This category does not exist.';
}
else{
    echo 'Category found';
}