php - 我无法使用 PDO 在 SQL Server 2008 中执行存储过程
问题描述
我无法使用 PDO 和 freetds (tds version=4.2, FreeBSD 10.0, php 5.6.2) 在 SQL Server 2008 中执行存储过程:
$host = 'SRV1';
$db = 'FLOT_RRR';
$user = 'coolman';
$pass = '******';
$charset = 'windows-1251';
$dsn = "dblib:version=4.2;host=$host;dbname=$db;$charset";
try {
$pdo = new PDO($dsn, $user, $pass);
} catch(PDOException $e) {
die("Failed to get DB handle: " . $e->getMessage()) ;
}
$st = $pdo->prepare('EXEC dbo.getNumberSmallShips');
$res = $st->execute();
var_dump($res)
返回布尔值(假)
我的存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[getNumberSmallShips]
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT (*)
FROM
(SELECT
FLO_RN, FLO_FKL
FROM
flotmintrans
WHERE
FLO_FKL LIKE '%мс%' OR
FLO_FKL LIKE '%категория%' OR
FLO_FKL LIKE '%категория 3%' OR
FLO_FKL LIKE '%категория 4%' OR
FLO_FKL LIKE '%категория 5%' OR
FLO_FKL LIKE '1' OR
FLO_FKL LIKE '2' OR
FLO_FKL LIKE '3' OR
FLO_FKL LIKE '5' OR
FLO_FKL LIKE '4' AND
FLO_DSU IS NULL) AS subquery
END
怎么了?
解决方案
连接 DB 的用户 coolman 必须具有执行存储过程 getNumberSmallShips 的权限。而已。
推荐阅读
- c - 如何让 fgets 接收用户输入?
- reactjs - 有谁知道为什么我的论文不会留在网格上?材质-UI
- c# - Xamarin iOS 上此平台异常不支持操作
- javascript - 如何确保首先运行 Jest 引导文件?
- user-interface - JavaFX:将节点拖入 HBox
- python - 通过使其重新加载另一个函数来腌制一个用于多处理的函数
- html - XSLT 将属性值评估为 XPath?
- sql - 聚合函数将多行中的值汇总到一个结果行中
- angular - 在 Angular 9 上重新编译后缺少 @Input() 变量
- wordpress - 从 wordpress 中的日期中删除链接