无法使用PHP PDO

时间:2016-02-25 14:19:35

标签: php sql-server pdo

使用以下语句从PHP查询SQL Server数据库时:

SELECT [Value] FROM sys.extended_properties WHERE name='MS_Description'

我收到此错误消息:

  

“致命错误:未捕获的异常'PDOException',消息为'SQLSTATE [IMSSP]:无效类型。”在C:\ inetpub \ wwwroot \ index.php:104堆栈跟踪:#0 C:\ inetpub \ wwwroot \ index.php(104):PDOStatement-> fetch(2)#1 {main}抛出C:\第104行的“inetpub \ wwwroot \ index.php”

我正在使用的php在下面,104行是While循环的开始:

$sql = "SELECT [Value] FROM sys.extended_properties WHERE name='MS_Description'";
global $pdo;
$qry = $pdo->query($sql);
if (!$qry) {
    exit('<pre>' . print_r($qry->errorInfo()));
}
while($row = $qry->fetch(PDO::FETCH_ASSOC)) {
    foreach ($row as $key => $value) {
        echo '<p>Key: ' .$key. ', Value: ' .$value. '</p>';
    }
}

从任何其他表或视图中选择时,上面的代码工作正常,例如:

SELECT * FROM sys.events

如果我通过SSMS执行语句,它可以正常工作,任何想法为什么它不能通过PHP工作?

1 个答案:

答案 0 :(得分:0)

选择被选为varchar(255)的列解决了这个问题,即

$sql = "SELECT CAST([Value] AS VARCHAR(255)) FROM sys.extended_properties WHERE name='MS_Description'";

根据this questionthis question的答案获得解决方案。