0

我正在尝试将数据从 MSSQL 表导出到 Excel。下面是我的代码。问题是我收到以下错误:

    Fatal error: Call to undefined function mssql_fetch_array() in C:xampp\code.php on line 25

我正在运行 Windows Server 2008 R2、IIS7、SQL Server 2008、PHP 版本 5.4.4。

我已取消注释该行:“extension=php_mssql.dll”在 C:\xampp\php\php.ini 中找到

    <?php
// load library
require 'include\php-excel.class.php';

$i = 0; // used as a counter

$myServer = "SERVERNAME\SQLEXPRESS";
$myUser = "UserName";
$myPass = "xxxxxx";
$myDB = "dbName";

$conn = new COM ("ADODB.Connection") or die("Cannot start ADO");

$connStr = "PROVIDER=SQLOLEDB;SERVER=".$myServer.";UID=".$myUser.";PWD=".$myPass.";DATABASE=".$myDB;
$conn->open($connStr); //Open the connection to the database

$result = "SELECT Col1, Col2, Col3 FROM myTable WHERE Col3='myCondition'";

//$rs = $conn->execute($result);
//$num_columns = $rs->Fields->Count();

    // create data array and print headers on the first row
    $data = array(1 => array ('No.', 'Col1', 'Col2', 'Col3'));

    while($row=mssql_fetch_array($result)) {
//include additional rows
array_push($data, array($i, $row['Col1'], $row['Col2'], $row['Col3']));
$i++;
}

// If no results, indicate this on the first row
if ($i == 0){
$data = array(1 => array ('No results', 'empty', 'empty', 'empty'));
                        }

//generate file (constructor parameters are optional)
$xls = new Excel_XML('UTF-8', false, 'My Test Sheet');
$xls->addArray($data);
$xls->generateXML('MyReport');
    ?>

先感谢您。

4

4 回答 4

1

PHP5.3 以后不支持 mssql 函数。如果你检查你的 PHP ext 文件夹,你会发现不再有 php_mssql.dll

于 2012-08-16T12:48:13.200 回答
1

您正在使用 ADODB COM 创建数据库连接。这与使用mssql_xx库不同。

你不能在两者之间混合和匹配——它们不兼容。

无论如何,您显然没有安装该mssql_xx库(我什至不确定它是否受支持),所以您不能使用它。

在您失败的呼叫上方mssql_fetch_array(),您有一些注释掉的行:

//$rs = $conn->execute($result);
//$num_columns = $rs->Fields->Count();

不知道您为什么将这些注释掉,因为您将需要它们或类似的东西。特别是其中的第一行。之后,您需要使用 ADODB 等价于mssql_fetch_array()读取循环中的记录。

但是,我的建议是放弃所有这些,转而使用 PDO 库。PDO 支持 MS SQL 数据库,并且是标准 PHP,与您在此处尝试使用的 ADODB 不同。

在此处查看 PDO 库的 PHP 手册:http: //php.net/manual/en/book.pdo.php

于 2012-08-16T13:08:52.127 回答
0

取消 MS SQL 库的注释后,您是否重新启动了 Web 服务器以使更改生效?

于 2012-08-14T14:15:44.633 回答
0

对于sql,我们可以使用sqlsrv_fetch_arraywith sqlsrv_queryas:

$sql_query = "SELECT Col1, Col2, Col3 FROM myTable WHERE Col3='myCondition'";
$result = sqlsrv_query($conn,$sql_query);
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC) ) {
        echo $row['Col1'];
        /*etc codes here*/
}
于 2017-07-19T13:37:20.317 回答