使用的 docker 环境,PHP7.4,PHP 的 sqlsrv,pdo_sqlsrv,odbc,pdo_odbc 扩展已将安装。
我使用 DB::connection('')->select()就会报错 报错信息:SQLSTATE[IMSSP]: Field 1 returned no data. (SQL: select top 1 * from tbl_mpay_order with(nolock) where id = 1000 ) 我使用 DB::connection('')->update(),执行修改语句,就不会报错,也能正确修改。 我使用原生 pdo 连接进行查询,就不会报错。代码如下
try{ $env = env('APP_ENV'); $dbHost = env('SRV_DB_HOST'); $dbUser = env('SRV_DB_USERNAME'); $dbPwd = env('SRV_DB_PASSWORD'); $dbName = "gameplane"; if(!empty($dbHost) && !empty($dbUser) && !empty($dbPwd)){ $dbName = "sqlsrv:Server={$dbHost};Database={$dbName}"; $db = new \PDO($dbName, $dbUser, $dbPwd); } $sql = " select * from t_alipay_packet with(nolock) where packetType = 1 "; $stmt = $db->query($sql); $res = $stmt->fetch(\PDO::FETCH_ASSOC); echo '<pre>'; print_r($res); return; }catch (\Exception $e){ echo '<pre>'; print_r($e->getMessage()); return; }
1 PeterYang1996 2021-06-04 15:24:04 +08:00 没看懂,你报错的语句和 pdo 查询的语句都不一样 |
![]() | 2 570956418 OP 最下面的一大段代码,是我能正常执行的,我是想说 pdo_sqlsrv 扩展是装好了。 报错信息里面的 sql 你可以忽略,SQL 是没问题的,最主要的是 select 总是报 SQLSTATE[IMSSP]: Field 13 returned no data,这个错误。不知道怎么回事 |
![]() | 3 batyu 2021-06-04 15:58:30 +08:00 看起来像是把 laravel 中的 select 管道当作查询函数使用了... 查询部分字段:DB::connection('')->table("table_name")->select("字段 1", "字段 2", "字段 3")->find(1000) 查询所有字段:DB::connection('')->table("table_name")->find(1000) |
![]() | 4 570956418 OP @batyu 使用你说的方法还是报同样的错误。 SQLSTATE[IMSSP]: Field 13 returned no data. (SQL: select top 1 * from [tbl_mpay_order] where [id] = 1000) |
![]() | 5 batyu 2021-06-04 16:26:14 +08:00 多少年不用 sqlserver 了,查了一下,看到说 IMSSP 是驱动引起的错误: [For errors that originate from the Microsoft Drivers for PHP for SQL Server, a SQLSTATE of IMSSP]( https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-errors?view=sql-server-ver15) |
7 junler 2022-06-27 15:39:17 +08:00 你好,请问这个问题解决了吗? |
8 youyelan9527 2022-06-27 16:44:59 +08:00 解决了吗 |
9 junler 2022-06-29 09:58:01 +08:00 @junler 问题解决了,原本 php7.4 的容器中默认装的 pdo_sqlsrv-5.10.1 版,版本换成 5.10.0 就可以了。odbc 的驱动有 13 、17 、18 三个版本的,17 这个版本 php7.4 可以用。 https://pecl.php.net/package/pdo_sqlsrv https://docs.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16 |