#1 tmd
我正在写一个注册页面,在数据库里插入重复记录时会引发sp error (),如何在部署模式下将具体的错误原因反馈给用户让用户知道是哪个字段引起重复?
2010-12-15 23:06:03
#2 jake
部署模式目前是无法获取到具体出错信息,只发送了error_log,接下来可能加入throw之类的处理。
另外有个方法,首先是调试模式,然后配置'sp_notice_php'的错误处理文件,这个处理文件可以接收到$msg,$traces两个变量,分别是错误信息和调试树。改变了这个处理文件,和部署模式的效果是一样的。
2010-12-16 08:53:28
#3 tmd
谢谢!回答的有点高深。我自己暂时是这么做的:修改了mysql。php中的create()函数
public function exec($sql)
{
$this->arrSql[] = $sql;
if( $result = mysql_query($sql, $this->conn) ){
return $result;
}else{
//spError("{$sql}
执行错误: " . mysql_error());
spError("{$sql}
执行错误: " . mysql_error(),TRUE,FALSE);
}
}
修改了sperror()函数:
function spError($msg, $output = TRUE, $stop = TRUE){
if(TRUE != SP_DEBUG){
error_log($msg);
if(TRUE == $stop)exit;
}
else
{
$traces = debug_backtrace();
$bufferabove = ob_get_clean();
require_once($GLOBALS['G_SP']['sp_notice_php']);
if(TRUE == $stop)exit;
}
}
然后在部署模式下使用echo "
数据库错误:".mysql_error()."
";显示错误原因。暂时满足要求了,以后在考虑更好的办法。
2010-12-19 14:09:08
#4 jake
更好的方法,现在就可以有,svn中的新版SP框架,加入了抛出异常的处理,你可以借助抛出异常来进行任何的SQL处理。
2010-12-19 18:09:55
#5 tmd
谢谢!没用过svn,为什么总是先发布svn版本的呢?直接下载就可以用吗?
2010-12-19 22:03:54
#6 jake
谢谢!没用过svn,为什么总是先发布svn版本的呢?直接下载就可以用吗?
tmd 发表于 2010-12-19 22:03 
PHP开源项目都是先发svn的,svn版本主要为了测试。到了稳定之后再发行正式版zip包。
另外,svn在团队开发中是最常用的工具,而个人日常开发也可以用到它,很实用的工具。建议你研究研究SVN。
2010-12-20 08:05:15
#7 tmd
谢谢老大!有时间我再学习一下svn。现在单枪匹马,先应付着。
2010-12-20 21:58:38