我正在开发一个项目来连接到MSSQL数据库并对它执行查询,这绝对是新的。
所以我到目前为止所做的是设置WAMP,在php.ini中为PHP 5.5添加Microsoft PHP驱动程序,并使用以下代码创建了与我的数据库的成功连接:
<?php
$server = 'servername,1433';
$database = 'database_name';
$user = 'username';
$password = 'pass';
$conn = new PDO("sqlsrv:Server=$server;Database=$database",
"$user", "$password",
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
?>
我正在使用SQL Server 2014.仅举这一点。所以现在我尝试用我的数据库中的表格显示一些信息:
<?php
require_once('sqlcon.php');
function GetRow($stmt)
{
return sqlsrv_fetch_array($stmt);
}
$sql = "SELECT * FROM dbo.operations";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row = GetRow($stmt) ) {
echo ("<tr>");
echo ("<td>" . $row['id'] . "</tr>");
echo ("<td>" . $row['OperType'] . "</td>");
echo ("<td>" . $row['Acct'] . "</td>");
echo ("<td>" . $row['GoodID'] . "</td>");
echo ("<td>" . $row['PartnerID'] . "</td>");
echo ("<td>" . $row['ObjectID'] . "</td>");
echo ("<td>" . $row['OperatorID'] . "</td>");
echo ("<td>" . $row['Qtty'] . "</td>");
echo ("<td>" . $row['Sign'] . "</td>");
echo ("<td>" . $row['PriceIn'] . "</td>");
echo ("<td>" . $row['PriceOut'] . "</td>");
echo ("<td>" . $row['VatIn'] . "</td>");
echo ("<td>" . $row['VatOut'] . "</td>");
echo ("<td>" . $row['Discount'] . "</td>");
echo ("<td>" . $row['Currency'] . "</td>");
echo ("</tr>");
}
sqlsrv_free_stmt( $stmt);
?>
但我在浏览器中收到此错误:
致命错误:调用未定义的函数sqlsrv_query() 第11行的C:\ wamp \ www \ sql.php调用堆栈
时间记忆功能位置1 0.0005 139320 {main}().. \ sql.php:0
我曾多次尝试过不同的功能,但没有运气。我不知道为什么无法识别sqlsrv_query()函数。
我知道我错过了什么,但不知道是什么。提前谢谢。
答案 0 :(得分:0)
使用完整的SQL Server PDO API考虑以下调整。
您的代码在连接期间声明了PDO,但您不使用该对象$conn->query()
,而是使用$conn
作为sqlsrv_query()
函数中的参数。因此,您将两个API混为一谈:SQLSRV and PDO。要使用sqlsrv_query(),您需要使用sqlsrv_connect()进行连接。否则,请使用query
或prepare
和execute
语句。
<?php
$server = 'servername,1433';
$database = 'database_name';
$username = 'username';
$password = 'pass';
try {
$conn = new PDO("sqlsrv:Server=$server;Database=$database",
$user, $password);
$sql = "SELECT * FROM dbo.operations";
$STH = $conn->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
while($row = $STH->fetch()) {
echo ("<tr>");
echo ("<td>" . $row['id'] . "</tr>");
echo ("<td>" . $row['OperType'] . "</td>");
echo ("<td>" . $row['Acct'] . "</td>");
echo ("<td>" . $row['GoodID'] . "</td>");
echo ("<td>" . $row['PartnerID'] . "</td>");
echo ("<td>" . $row['ObjectID'] . "</td>");
echo ("<td>" . $row['OperatorID'] . "</td>");
echo ("<td>" . $row['Qtty'] . "</td>");
echo ("<td>" . $row['Sign'] . "</td>");
echo ("<td>" . $row['PriceIn'] . "</td>");
echo ("<td>" . $row['PriceOut'] . "</td>");
echo ("<td>" . $row['VatIn'] . "</td>");
echo ("<td>" . $row['VatOut'] . "</td>");
echo ("<td>" . $row['Discount'] . "</td>");
echo ("<td>" . $row['Currency'] . "</td>");
echo ("</tr>");
}
# close the connection
$conn = null;
?>