我目前忙于在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.';
}?>
它显示此类别不存在行。我不知道表格的错误是什么。这是表。 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{
答案 0 :(得分:0)
使用行计数有什么意义?
如果您需要一个类别 - 为什么不提取它?
<?php
$sql = "SELECT cat_id, cat_name, cat_description FROM categories WHERE cat_id = ?";
$stm = $db->prepare($sql);
$stm->execute(array($_GET['id']));
$row = $stm->fetch();
if (!$row) {
// no category found
}
请注意,您必须使用预备语句,如上所示 您还必须按照tag wiki
中的说明设置正确的错误报告答案 1 :(得分:-1)
首先,由于您使用的是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';
}