PHP PDO SQL Server Select语句不替换问号

Posted

技术标签:

【中文标题】PHP PDO SQL Server Select语句不替换问号【英文标题】:PHP PDO SQL Server Select statement not replacing question marks 【发布时间】:2011-05-27 09:10:28 【问题描述】:

不久前,我编写了一个数据库类,它使用 PDO 来连接 SQL Server 数据库和 mysql 数据库。在 MySQL 数据库上使用它时,它总是可以很好地替换问号,但是对于 SQL Server 数据库,我必须创建一个基本上手动替换问号的工作。这是它的代码。

if($this->getPDODriver() == 'odbc' && !empty($values_a) && substr_count($query_s, "?") > 0) 
    $query_s = preg_replace(array_fill(0, substr_count($query_s, "?"), '/\?/'), $values_a, $query_s, 1);
    $values_a = NULL;

现在,我知道这完全违背了问号和 PDO 的目的,但它对我来说效果很好。不过,我现在想做的是找出问号没有被替换的原因,并删除此解决方法。

如果我有如下的 select 语句

SELECT * FROM database WHERE value = ?

这就是我去准备查询时的样子,但是当我显示查询结果时,它是一个空白数组。

请记住,这个类在 MySQL 上运行良好,并且在上面的工作中运行良好。所以我知道这与问号有关。

【问题讨论】:

【参考方案1】:

信息不足查看SQL Server Profiler,将pdo发送的真实查询与预期进行比较。

【讨论】:

以上是关于PHP PDO SQL Server Select语句不替换问号的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 驱动程序 PHP 在 sql-server 查询中循环

从 MS SQL 中的 PHP PDO 存储过程中返回 Select *

SQL Server 错误 1934 发生在 INSERT 到具有计算列 PHP/PDO 的表中

使用 PHP PDO 将参数传递给 SQL Server 存储过程

php+mysql 请问:用pdo如何获取某个表中记录的数目?

无法使用 PHP PDO 获取 SQL Server 打印消息