我目前正在取得PDO论坛系统。我已经完成了索引,我现在正在与类别bussy,但以一种奇怪的方式,我没有收到类别。当我在category.php?id = 1时,它表示该类别不存在。以下代码是用于接收类别ID的部分类别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.';
}?>
它显示了此类别ford不存在的行。我不知道什么是错误的表是正确的。这是桌子。 http://sqlfiddle.com/#!2/8d1c4。
我是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{
你为什么要检查'$ sql || ($ result == 0)'?这将打印''这个类别不存在。'如果查询工作! –
@RocketHazmat因为如果结果== 0(没有该类别的ID),那么它不存在 – jacmob
但看看会发生什么,如果它*存在!如果类别退出,'$ result'将*不*等于'0','$ sql'将*不*为'FALSE'。因此你会得到'if($ sql ||($ result == 0))'。这将是'if(TRUE || FALSE)'。这是'TRUE',所以'这个类别不存在。''被打印。即使它*存在。你需要检查你的逻辑。 –