Php 在数据库中找不到记录时显示错误的正确方法

Php 在数据库中找不到记录时显示错误的正确方法,php,model-view-controller,zend-framework,zend-db,Php,Model View Controller,Zend Framework,Zend Db,目前,我有一个模型,它有一个名为getEmails($id=NULL)的方法。 如果$id==NULL,则getEmails()使用fetchAll($select)->toArray()返回电子邮件表中的所有记录。在视图中,我有一个if语句,用于检查返回的数组是否为空数组。如果是,它将显示一个错误,让用户知道没有要显示的电子邮件,否则它将通过foreach()循环显示所有电子邮件 在这种情况下,使用if语句检查电子邮件数组是否为emapty是否正确?还是我应该用另一种方式 如果$id!=NUL

目前,我有一个模型,它有一个名为getEmails($id=NULL)的方法。 如果$id==NULL,则getEmails()使用fetchAll($select)->toArray()返回电子邮件表中的所有记录。在视图中,我有一个if语句,用于检查返回的数组是否为空数组。如果是,它将显示一个错误,让用户知道没有要显示的电子邮件,否则它将通过foreach()循环显示所有电子邮件

在这种情况下,使用if语句检查电子邮件数组是否为emapty是否正确?还是我应该用另一种方式

如果$id!=NULL getEmails使用以下代码仅返回一条记录:

        $select->where('id=?',$id);
        $row = $this->fetchRow($select)
        if(!$row) throw new Exception('Could not find email with ID '.$id);
        else return $row->toArray();
如您所见,如果找不到记录,它将抛出异常

我觉得有一种更统一的方式在必要时向用户显示错误

如果找不到id为$id的电子邮件,则抛出异常是否正确


我正在尝试学习“正确”的操作方法,因此感谢您的帮助:-)

您可以使用Zend Framework Flash Messenger向用户显示该错误消息

在控制器中,可以使用以下代码:

$this->_helper->flashMessenger->addMessage("Could not find email with ID $id");
要显示消息,可以执行以下操作:

在控制器中,您必须检索以下消息:

$this->view->messages = $this->_helper->flashMessenger->getMessages();
在要显示它们的视图脚本中:

<?php if (count($this->messages)) : ?>
<ul id="messages">
<?php foreach ($this->messages as $message) : ?>
    <li><?php echo $this->escape($message); ?></li>
<?php endforeach; ?>
</div>
<?php endif; ?>

这是一个关于如何使用flash messenger的非常基本的示例,但这肯定会让您上路


编辑:在重新阅读您的问题后,我意识到(我应该立即意识到)您正在从模型生成错误/异常。您可以在控制器中测试null返回值并从那里发送消息,或者您可以创建一个会话并在其中存储消息,以便控制器拾取并放入flash messenger。

您可以使用Zend Framework flash messenger向用户显示该错误消息

在控制器中,可以使用以下代码:

$this->_helper->flashMessenger->addMessage("Could not find email with ID $id");
要显示消息,可以执行以下操作:

在控制器中,您必须检索以下消息:

$this->view->messages = $this->_helper->flashMessenger->getMessages();
在要显示它们的视图脚本中:

<?php if (count($this->messages)) : ?>
<ul id="messages">
<?php foreach ($this->messages as $message) : ?>
    <li><?php echo $this->escape($message); ?></li>
<?php endforeach; ?>
</div>
<?php endif; ?>

这是一个关于如何使用flash messenger的非常基本的示例,但这肯定会让您上路

编辑:在重新阅读您的问题后,我意识到(我应该立即意识到)您正在从模型生成错误/异常。您可以在控制器中测试null返回值并从那里发送消息,或者您可以创建一个会话并将消息存储在那里,以便由控制器拾取并放入flash messenger中