为了账号安全,请及时绑定邮箱和手机立即绑定

PHP + MS SQL Server:嵌套存储过程的行为与直接在数据库上运行时不同

PHP + MS SQL Server:嵌套存储过程的行为与直接在数据库上运行时不同

PHP
萧十郎 2022-12-23 12:22:05
不幸的是,由于我不能分享我公司的代码,所以我会有点含糊,所以我提前道歉。我发现存储过程(调用其他存储过程)在我们的 MS SQL Server 数据库中存储员工的方式存在差异。当直接在数据库上运行(使用我的 PHPStorm 控制台)时,当尝试添加任意数量的员工时,它会正确地添加他们。然而,当通过 PHP 运行时,实际上只插入了一个随机数。我的 PHP 设置类似于:$con = sqlsrv_connect($host . ',' . $port, [    "Database" => $database,    "UID" => $user,    "PWD" => $password,    "ReturnDatesAsStrings" => true,    "CharacterSet" => "UTF-8"]);$sql = "EXEC EmployeeAdd '[{ json data here }]'"$stmt = sqlsrv_query($con, $sql);我也尝试了 PDO 库并看到了相同的结果。sqlsrv有没有人在使用 PHP或PDO库运行嵌套存储过程时遇到问题?如果是这样,你做了什么来解决这个问题?提前致谢。
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

这好有趣!我们有一些print陈述导致了这个问题。删除它们解决了问题,我能够按预期导入员工。感谢您的帮助@Zhorov。

更多信息:默认情况下,PHP 设置WarningsReturnAsErrors为打开。因为 print 语句生成01000带有错误代码的警告#0,PHP 将其视为错误并立即停止执行。要在不删除print语句的情况下解决此问题,您可以:

  1. 在 PHP 脚本中,设置

sqlsrv_configure("WarningsReturnAsErrors", 0);
  1. 更新您的 php.ini 以包含

sqlsrv.WarningsReturnAsErrors = 0


查看完整回答
反对 回复 2022-12-23
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号