PHP PDO dblib参数未绑定


PHP PDO dblib parameters not bound

我必须连接到外部SQL数据库。我正在使用PDO dblib

与数据库的连接正常。当我尝试使用prepare语句时,没有设置参数。

$dbh = new PDO(sprintf('dblib:host=%s;dbname=%s',self::DB_HOST,self::DB_NAME), self::DB_USERNAME, self::DB_PASSWORD);
$dbh->prepare("SELECT * FROM Contacts WHERE ref = :id");
$sth->execute(array(':id' => 1172));
$result =  $sth->fetchAll(PDO::FETCH_CLASS);

返回一个空数组

根据文档再次尝试:(http://php.net/manual/en/pdostatement.execute.php)

$dbh->prepare("SELECT * FROM Contacts WHERE ref = ?");
$sth->execute(array(1172));
$result =  $sth->fetchAll(PDO::FETCH_CLASS);

也返回一个空数组

第三次不带参数的尝试:

$dbh->prepare("SELECT * FROM Contacts WHERE ref = 1172");
$sth->execute();
$result =  $sth->fetchAll(PDO::FETCH_CLASS);

返回结果

我也尝试了$sth->bindParam()和$sth->bindValue(),但我没有得到任何结果。

我将dblib安装在linux服务器上,连接到外部Microsoft 2008 SQL服务器。

我做错了吗?

PDOStatement::execute:

input_parameters

一个值数组,其元素数量与类中的绑定形参数量一样多正在执行的SQL语句。所有值都被视为PDO::PARAM_STR

最后一句话可能是你的问题的根源:也许在你的数据库中1172不等于'1172'。在命令行中查看查询结果是否为"0":

SELECT 1172 = '1172';