我正在尝试将数据从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_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');
?>
提前谢谢。
答案 0 :(得分:1)
PHP5.3以后不支持mssql函数。如果你检查你的PHP ext文件夹,你会发现没有更多的php_mssql.dll
答案 1 :(得分:1)
您正在使用ADODB COM创建数据库连接。这与使用mssql_xx
库不同。
你不能在两者之间混合搭配 - 它们不兼容。
在任何情况下,你显然没有安装mssql_xx
库(我甚至不确定它是否受支持),所以你不能使用它。
正好在你mssql_fetch_array()
失败的电话之上,你有一些注释掉的行:
//$rs = $conn->execute($result);
//$num_columns = $rs->Fields->Count();
不确定你为什么评论这些,因为你需要它们,或类似它们。尤其是第一条线。之后,您需要使用与mssql_fetch_array()
等效的ADODB来读取循环中的记录。
但是,我的建议是放弃所有这些,转而使用PDO库。 PDO支持MS SQL数据库,是标准的PHP,不像你在这里尝试使用的ADODB。
请在此处查看PDO库的PHP手册:http://php.net/manual/en/book.pdo.php
答案 2 :(得分:0)
取消注释MS SQL库的行后,您是否重新启动了Web服务器以使更改生效?
答案 3 :(得分:0)
对于sql
,我们可以将sqlsrv_fetch_array
与sqlsrv_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*/
}