如果在php中没有从db查询返回结果,如何显示消息

时间:2014-09-05 12:31:43

标签: php mysql

想知道是否有人可以提供帮助。我正在浏览php和mysql的教程,其中有一个笑话数据库,其中包含:

  • 笑话表中的笑话
  • 作者表中的作者
  • 类别表中的类别

我有一个名为authors.html.php的页面,其中包含一个作者列表,其中包含添加作者,编辑/删除作者的选项(在每个返回作者的名称旁边)。我想要做的是,如果包含作者的数据库为空而不是显示以下php错误:

  

注意:未定义的变量:第22行的C:\ wamp \ www \ chapter7 \ admin \ authors \ authors.html.php中的作者

我想显示一条漂亮的整洁消息,说明未找到任何结果。

我的代码如下:

<?php   
  include $_SERVER['DOCUMENT_ROOT'] . '/chapter7/includes/db.inc.php';
    try {
            $result = $pdo->query('SELECT id, name FROM author');
    } catch (PDOException $e) {
            $error = 'Error fetching authors from the database!';
            include $_SERVER['DOCUMENT_ROOT'].
                            '/chapter7/admin/error.html.php';
            exit();
    }       

    foreach ($result as $row){
            $authors[] = array('id' => $row['id'], 'name' => $row['name']);
        }

    include 'authors.html.php';

    if (isset($_POST['action']) and $_POST['action'] == 'Delete') {
            include $_SERVER['DOCUMENT_ROOT'].
                            '/chapter7/includes/db.inc.php';
            //Get jokes belonging to author 
            try {
                $sql = 'SELECT id FROM joke WHERE authorid = :id';
                $s = $pdo->prepare($sql);
                $s->bindValue(':id', $_POST['id']);
                $s->execute();
            } catch (PDOException $e) {
                $error ='Error getting list of jokes to delete.';
                include $_SERVER['DOCUMENT_ROOT'].
                                '/chapter7/admin/error.html.php';
                exit();
            }
            $result = $s->fetchAll();
            //Delete joke category entries
            try {
                $sql = 'DELETE FROM jokecategory WHERE jokeid =:id';
                $s = $pdo->prepare($sql);
                //For each joke
                foreach ($result as $row) {
                        $jokeId= $row['id'];
                        $s->bindValue(':id', $jokeId);
                        $s->execute();      
                }
            } catch (PDOException $e) {
                $error = 'Error deleting category entries for joke.';
                include $_SERVER['DOCUMENT_ROOT'].
                                '/chapter7/admin/error.html.php';
                exit();
            }
            //Delete jokes belonging to author
            try {
                $sql = 'DELETE FROM joke WHERE authorid = :id';
                $s = $pdo->prepare($sql);
                $s->bindValue(':id', $_POST['id']);
                $s->execute(); 
            } catch (PDOException $e) {
                $error = 'Error deleting jokes for author';
                include $_SERVER['DOCUMENT_ROOT'].
                                '/chapter7/admin/error.html.php';
                exit();
            }
            //Delete the author
            try {
                $sql = 'DELETE FROM author WHERE id =:id';
                $s = $pdo->prepare($sql);
                $s->bindValue(':id', $_POST['id']);
                $s->execute();
            } catch (PDOException $e) {
                $error ='Error deleting author';
                include $_SERVER['DOCUMENT_ROOT'].
                          '/chapter7/admin/error.html.php';
                exit();
            }
            header('Location: .');
            exit();
    }       

请注意我对此非常陌生并且已经尝试了一些失败的迭代,所以任何帮助甚至只是简单的指导将引导我完成创建此类功能的思考将非常感激。不只是寻找正确的答案,而是想要了解背后的想法,如果任何人都可以提供帮助,那就太棒了。

1 个答案:

答案 0 :(得分:0)

类似的东西应该有用。我过去曾经使用过它,它对我有用。您需要调整查询等对数据库和表格的查询,但它应该没问题。

$stm = $PdoObj->prepare("SELECT * FROM NEWS_articles");
    $stm ->execute();
    $results = $stm ->fetchAll();

    if($results==null){
        echo "<p>No dice, try other criteria</p>";
    }else{
        foreach($results as $row){
            echo $row["articleName"];
        }
    }