PDO虽然没有做任何事情

时间:2014-03-23 16:57:25

标签: php pdo smarty

我正在尝试首先检查项目是否存在,然后是否存在 - 我使用while循环获取项目信息并将其输出到智能模板上。

如果ID不存在,此代码会将我重定向到“projects.php”,但如果它确实存在,那么它只是什么都不做。我究竟做错了什么?如果你能指引我走正确的路,我将不胜感激。

谢谢!

if(isset($_GET['id'])) {

try {

    $stmt = $db->prepare('SELECT * FROM projects WHERE slug = :slug');
    $stmt->execute(array(':slug' => $_GET['id']));
    $id = $stmt->fetchColumn();

    if ($id) {
        while($row = $stmt->fetch()) {
            $projects[] = $row; 
            $smarty->assign('projects',$projects); 
        }
    } else {
        header("Location: /projects.php");
        exit();
    }

} catch(PDOException $e) {
    die ('ERROR: ' . $e->getMessage());
}

}

2 个答案:

答案 0 :(得分:0)

你在while循环中将变量传递给Smarty,它应该在while循环之后:

$projects = array();
while($row = $stmt->fetch()) {
    $projects[] = $row;
}
$smarty->assign('projects',$projects); 

答案 1 :(得分:-1)

你写的代码太多了。 PHP只是扼杀金额,无法进一步处理

if(isset($_GET['id'])) {

    $stmt = $db->prepare('SELECT * FROM projects WHERE slug = ?');
    $stmt->execute(array($_GET['id']));
    $projects = $stmt->fetchAll();

    if ($projects) {
        $smarty->assign('projects',$projects); 
    } else {
        header("Location: /projects.php");
        exit();
    }
}

是您需要的所有代码