我是一名老学校开发人员,刚进入WWW编程世界 . 我正在为我正在使用的公司开发一个带有HTML,CSS,PHP和MSSQL Server 2008 R2的应用程序 .
在我的应用程序中,我使用存储过程从/向数据库插入,修改,删除或查询信息 . 根本不使用TSQL指令,只是从PHP代码执行存储过程 .
我正在使用PHP 5和SQLSRV驱动程序进行数据库交互 .
到目前为止一切正常,但现在我被卡在插件上...如果一切正常,SP会插入记录,如果没有,它不会......但是我没有看到结果,直到我再次查询表只是为了查看记录是否存在 .
我在PHP中使用以下代码来运行在表中插入记录的SP:
function spinserta($tabla, $columnas, $valores, $cnct) {
$stmt = 'Exec spinsert @tabla=?,@columnas=?,@valores=?';
$params = array($tabla,$columnas,$valores);
$result = sqlsrv_query($cnct,$stmt,$params) ;
return $result;
}
如果事务不成功,我不会在$ result变量中获取任何内容,并希望从SP获得结果消息,以便向用户显示错误消息 .
如何从SP获得结果消息(如果是错误则无关紧要)?
提前致谢!
2 回答
经过几个小时的研究......终于得到了这个概念!事情就是这样:最初的PHP代码是:
最初的SP是:
非常直接......当执行php代码并且SP成功时,变量$ result加载了“Resource id#14”,如果SP失败,$ result值为null .
事情进展顺利!但不是我想要的方式 . 然后我发现这篇文章:http://msdn.microsoft.com/en-us/library/ms178592.aspx
基于此我修改了SP:
和PHP代码:
我的原始方法有两个问题,1在数据库引擎端,即使语句失败,SP也没有真正产生系统错误 . 使用Try-Catch技术,采用RAISEERROR概念,SP最终在状态失败时产生系统错误 . 在此之后,只需对PHP代码进行微调即可 .
通过这种方法,发送到数据库的信息的验证在数据库引擎端完成,无需编写大量代码,只是为了在提交时验证表单中的字段 . 所需要的是确保数据库表,关系,约束,完整性和其他应用得到很好的应用,并且数据库将保护自己免受不正确的数据的影响 . 如果提交表单中提供的信息错误,数据库将拒绝它们,代码将向用户显示正确的错误 .
我想看看类似的东西是否与MySQL相似......我想是的!
非常感谢Maximus2012!干杯!!!
这是我的一个应用程序中的一些代码 . 看看它是否有帮助: