【发布时间】:2019-09-26 13:27:29
【问题描述】:
使用 PHP 7.1,PDO,我正在尝试对远程 SQL Server 数据库运行查询,该数据库连接良好并且能够运行查询,在使用用户定义函数时接受。
当直接在 SQL Server 数据库上运行时,语句运行良好,只是通过 PHP 是一个问题。
我已经通过没有用户定义函数的 PHP 运行了它,并且工作正常,我得到了结果。
任何帮助都会很棒。
谢谢
$pdo = new \PDO(
sprintf(
"dblib:host=%s;dbname=%s",
$server,
$database
),
$user,
$pass
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "
select
acCode AS 'Ac Code',
acCompany AS 'Company Name',
myDBName.myFunctionName(2020, 0, acCode) AS 'Balance'
from
myDBName.CUSTSUPP
where
acCustSupp = 'C'
and
myDBName.myFunctionName(2020, 0, acCode) > 0
order by
acCode";
$statement = $pdo->prepare($query);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
【问题讨论】:
-
请发布您的 PHP 代码。可能
myDBName.myFunctionName(2020, 0, acCode) > 0应该是dbo.myFunctionName(2020, 0, acCode) > 0或myDBName..myFunctionName(2020, 0, acCode) > 0。使用PHP,您可以轻松选择myDBName数据库。谢谢。 -
在 WHERE 子句中使用标量 UDF 会导致代码非常慢。它每次都必须读取整个表,避免任何并行处理,并收到简单使用标量 UDF 的性能影响。
-
我已经用更新的代码更改了原始帖子。谢谢
-
使用字符串文字作为列别名已经被弃用了很长时间。 sqlblog.org/2012/01/23/…
标签: php sql-server pdo