我不确定在向最终用户提供可读反馈时最好使用哪种方法。我读过一些论坛,但没有真正得到任何明智的(或我没有明白它)在PHP/mysql中需要一些关于错误处理的建议
我想给插入/更新失败时,当它是一个成功,当给定制反馈(如检查是否一个项目已经存在)。
对于INSERT,UPDATE,DELETE,DROP等,查询返回TRUE或FALSE。 因此,我的结果属性$ this-> query_result应始终为true或false。
我的问题:
- 动态显示反馈给用户 后提交表单(提交到同一 页)
- $这个 - > query_result是真实的,如果它 返回一个字符串
我添加了代码,看看我在做什么(做错了)
这些是功能NS我使用的连接/查询DB:
public function connect()
{
if (!($this->conn = mysql_connect($this->host, $this->username, $this->pwd))) {
die("Error connecting to DB by user = " . $this->username);
}
$this->db = mysql_select_db($this->dbname,$this->conn)
or die("Unable to connect to database " . $this->dbname);
}
private function query($sql)
{
$this->query_result = mysql_query($sql, $this->conn)or die("Unable to query local database <b>". mysql_error()."</b><br>$sql");
if (!$this->query_result){
die("database query failed.");
} else {
return $this->query_result;
}
}
这里是我的问题:我给的数据访问层(DAL)的反馈,例如见这个:
public function addNewPerson($formData)
{
$sql = "INSERT INTO my_table(`name`, `email`, `www`)";
$sql .= " VALUES('".
$formData['name']."','".
$formData['email']."','".
$formData['www']."','");
$this->query($sql);
return $this->query_result;
}
通过返回一个文本字符串,返回结果将始终为真。 从我阅读的内容来看,我应该有一个处理错误/反馈的函数。
这是我目前在我的模板反馈做:
if (isset($_POST['form_submit']))
{
if (isset($_POST['person_submit'])) {
$formData = $sl->getFormData();
$result = $myDB->addNewPerson($formData);
if ($result == true)
{
echo '<script type="text/javascript" language="JavaScript">
jQuery("#contentArea .messageWindow1").show(500);
jQuery("#contentArea :input").click(function(){ jQuery("#contentArea .messageWindow1").hide(500); });
</script>';
} else {
echo '<script type="text/javascript" language="JavaScript">
jQuery("#contentArea .messageWindow2").show(500);
jQuery("#contentArea :input").click(function(){ jQuery("#contentArea .messageWindow2").hide(500); });
</script>';
}
}
}
<div id="contentArea">
<div class="messageWindow1"> <span class="msg"><?php echo $labelResult ?></span></div>
<div class="messageWindow2"> <span class="msg"><?php echo $labelResult ?></span></div>
</div>
感谢菲尔。我只使用.Net中的try/catch - 基本上只是示例的最后一部分。你为什么要上课?你不能只是从catch里面抛出错误消息吗?嗯......我有点不确定如何使用这个 - 尽管你有一个干净和漂亮的例子(对不起) – Steven 2009-06-10 13:49:33
Steven,他将标准的Exception类加以子类化,主要是因为它们用作不同类型错误的标记。它使您的代码更具可读性和划分性。但没有用处,因为这只会造成一个人无法理解的混乱。 有关相关问题,请参阅http://stackoverflow.com/questions/699372/using-the-right-exception-subclass-in-ruby。 – 2009-06-14 21:11:49