使用的 docker 环境,PHP7.4,PHP 的 sqlsrv,pdo_sqlsrv,odbc,pdo_odbc 扩展已将安装。
我使用 DB::connection('')->select()就会报错
报错信息:SQLSTATE[IMSSP]: Field 13 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 |