请问Linux上 如何用pdo调用调用存储过程。为啥我返回的值都是Array()
在win平台下我使用 $finance = DB::connection('sqlsrv')->select("exec xgx_finance_ledger ?,?,?", [$user_id, $start, $end]);可获得结果集,但是在Linux平台则返回[].
于是我使用pdo方式,但是还是返回Array(),求大神解答
这些代码都不起作用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
PDO::FETCH_ASSOC
指定获取方式,将对应结果集中的每一行作为一个由列名索引的数组返回哥们儿,你要求的就是返回数组格式啊!PDO::FETCH_ASSOC
你把fetch里面的fetch_assoc去掉,或者按照下面的方式,都可以。
设置连接的时候为对象,默认好像就是对象,但是这个可以强制设置,只需设置一次即可,后面就不需要了。
问题解决了,原因是win和Linux关于连接sqlserver驱动程序的问题,SQL Server ODBC 驱动程序和用于 SQL Server 的 Microsoft OLE DB 提供程序在连接时自动将 ANSI_NULL_DFLT_ON 设置为 ON。对来自 DB-Library 应用程序的连接,SET ANSI_NULL_DFLT_ON 默认为 OFF。
Linux 平台在laravel当执行 $finance = DB::connection('sqlsrv')->select("exec xgx_finance_ledger ?,?,?", ['J44022', '2017-02-01', '2017-09-19']);去获取数据时,由于存储过程中有多个可能为空的数据,如:
导致存储过程不执行,程序出错。
解决方法加一条语句 SET ANSI_NULL_DFLT_ON 。
参考链接:http://www.yesky.com/imagesne...