繁体   English   中英

使用Microsoft PHP Driver 3.2对MSSQL数据库执行查询

[英]Execute query against MSSQL database using Microsoft PHP Driver 3.2

我正在研究一个项目,该项目将连接到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 Server2014。仅提及这一点。 所以现在我试图用这个显示数据库表中的一些信息:

<?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);
?>

但是我在浏览器中收到此错误:

致命错误:在第11行调用堆栈中的C:\\ wamp \\ www \\ sql.php中调用未定义函数sqlsrv_query()

时间记忆功能位置1 0.0005 139320 {main}().. \\ sql.php:0

我已经尝试过很多次使用不同的功能,但是都没有运气。 我不知道为什么无法识别sqlsrv_query()函数。

我知道我想念一些东西,但不知道是什么。 提前致谢 。

考虑使用完整的SQL Server PDO API进行以下调整。

您的代码在连接期间声明了PDO,但是您不使用该对象$conn->query()而是使用$conn作为sqlsrv_query()函数中的参数。 因此,您将两个API混为一谈: SQLSRV和PDO 为了使用sqlsrv_query() ,您需要使用sqlsrv_connect()进行连接。 否则,请使用queryprepareexecute语句。

<?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;

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM