使用以下语句从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工作?
答案 0 :(得分:0)
选择被选为varchar(255)
的列解决了这个问题,即
$sql = "SELECT CAST([Value] AS VARCHAR(255)) FROM sys.extended_properties WHERE name='MS_Description'";
根据this question和this question的答案获得解决方案。