Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
致命错误:调用第25行C:\xampp\htdocs\myFolder\exceltest.php中未定义的函数mssql\u fetch\u array()_Php_Sql Server 2008_Iis 7_Windows Server 2008 R2 - Fatal编程技术网

致命错误:调用第25行C:\xampp\htdocs\myFolder\exceltest.php中未定义的函数mssql\u fetch\u array()

致命错误:调用第25行C:\xampp\htdocs\myFolder\exceltest.php中未定义的函数mssql\u fetch\u array(),php,sql-server-2008,iis-7,windows-server-2008-r2,Php,Sql Server 2008,Iis 7,Windows Server 2008 R2,我正在尝试将数据从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版 我已经取消了对C:\xampp\php\php.ini中的“extension=php\u ms

我正在尝试将数据从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版

我已经取消了对C:\xampp\php\php.ini中的“extension=php\u mssql.dll”行的注释

    <?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');
    ?>
addArray($data);
$xls->generateXML('MyReport');
?>

提前感谢。

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

PHP5.3及以后版本不支持mssql函数。如果检查PHP ext文件夹,您将发现不再有PHP_mssql.dll了

您正在使用ADODB COM创建数据库连接。这与使用
mssql\u xx
库不同

你不能把两者混为一谈——它们不相容

在任何情况下,您显然没有安装
mssql\u xx
库(我甚至不确定它是否受支持),因此您不能使用它

在调用
mssql\u fetch\u array()
失败的正上方,有一些注释掉的行:

//$rs = $conn->execute($result);
//$num_columns = $rs->Fields->Count();
我不知道你为什么要把这些注释掉,因为你需要它们,或者类似的东西。尤其是第一行。然后,您需要使用相当于
mssql\u fetch\u array()
的ADODB来读取循环中的记录

然而,我的建议是放弃所有这些,转而使用PDO库。PDO支持MS SQL数据库,是标准的PHP,不同于您在这里尝试使用的ADODB


请参见PDO库的PHP手册:

对于
sql
,我们可以使用
sqlsrv\u fetch\u数组
sqlsrv\u query
如下:

$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*/
}

您是否验证它是正确的ini文件,并在启用模块后重新启动IIS?(在
phpinfo()中检查它output@ctrahey正确。运行
phpinfo()
并查看MS SQL函数是否已启用。加载的配置文件:C:\xampp\php\php.ini,这就是我编辑/取消注释“extension=php\u mssql.dll”的地方文件然后重新启动了webserver。我重新启动了IIS7和Apache,但出现了相同的错误消息。这些应该是对问题的评论(关于重新启动而不是修复问题的信息应该是对问题的编辑)非常感谢@SDC,非常重要的一点是,请大家注意,在我的例子中,Ubuntu 16.04 PHP7 MSSQL服务器和我使用的FreeTDS使用PDO,正如SDC在这里提到的,因此我需要使用正确的支持函数。