Php 在数据库中找不到记录时显示错误的正确方法
目前,我有一个模型,它有一个名为getEmails($id=NULL)的方法。 如果$id==NULL,则getEmails()使用fetchAll($select)->toArray()返回电子邮件表中的所有记录。在视图中,我有一个if语句,用于检查返回的数组是否为空数组。如果是,它将显示一个错误,让用户知道没有要显示的电子邮件,否则它将通过foreach()循环显示所有电子邮件 在这种情况下,使用if语句检查电子邮件数组是否为emapty是否正确?还是我应该用另一种方式 如果$id!=NULL getEmails使用以下代码仅返回一条记录: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
$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中