在尝试做我认为在PHP中非常简单的事情时,我有点噩梦。我没有任何PHP经验,所以我一直依赖文章/论坛等。
我想要做的就是查询MSSQL数据库,并在页面上输出。我遇到过几个错误消息告诉我的问题是驱动程序问题。
我的主机(a2hosting)告诉我他们安装了Microsoft ODBC Driver 13,因为11与服务器不兼容。他们告诉我pdo_sqlsrv已启用PHP 5.6我可以选择,所以我不应该有问题(通过Plesk我可以选择5.6.34,7.0.28,7.1.15,7.2.3 - 但无法查看phpinfo()。他们还告诉我在代码中包含驱动程序信息。
我无法找到任何特定于我的问题的片段或有用信息,所以我希望Stack Overflow世界可以提供帮助。 (我一直在尝试使用Microsoft和PHP手册中的示例,所以这可能有点遍布)
<html>
<head>
<title>Page Title</title>
</head>
<body>
<?php
$mssqldriver = '{ODBC Driver 13 for SQL Server}';
$hostname='my.ip';
$dbname='dbname';
$username='user';
$password='pass';
$conn = new PDO("sqlsrv:Server=$hostname;Database=$dbname", $username,
$password);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$conn->setAttribute( PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 1 );
$query = 'select * from salesdata';
// simple query
$stmt = $conn->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
print_r( $row['agent'] ."\n" );
}
$stmt = null;
?>
</body>
</html>
我得到的错误是:
致命错误:未捕获的异常&#39; PDOException&#39; with message&#39; SQLSTATE [IMSSP]:此扩展程序要求SQL Server的Microsoft ODBC驱动程序11与SQL Server通信。访问以下URL以下载适用于x86的SQL Server的ODBC驱动程序11:http://go.microsoft.com/fwlink/?LinkId=163712&#39;在C:\ Inetpub \ vhosts \ o2live.co.uk \ httpdocs \ testfile10.php:16堆栈跟踪:#0 C:\ Inetpub \ vhosts \ o2live.co.uk \ httpdocs \ testfile10.php(16):PDO- &gt; __ construct(&#39; sqlsrv:Server = 6 ...&#39;,&#39;用户名&#39;,&#39;密码&#39;)#1 {main}在C:\ Inetpub中抛出第16行的\ vhosts \ o2live.co.uk \ httpdocs \ testfile10.php
只是抬头我有一个共享主机帐户,所以我无法更改驱动程序/软件等。
很高兴使用一种完全不同的方法,如果有的话,我已尝试了几种,但这个似乎是我的主人的建议