php5.3怎么连接sqlserver2000

 更新时间:2016年11月25日 16:37  点击:1666
我们知道新版的php5.3是不支持mysql自带的mssql_connect这个数据连接函数,如果需要连接sqlserver数据库,我们只能使用了com 接口来做哦。

1.Com链接,ADODB.Connection

 代码如下 复制代码

$conn = new Com(“ADODB.Connection”);     //实例化一个Connection对象
$connstr = “provider=sqloledb;datasource=.;uid=sa;pwd=123456;database=jnold;”;
$conn->Open($connstr);
$rs = new Com(“ADODB.Recordset”);    //实例化一个Recordcount对象

$rs->Open(‘select * from News where bigclassid = 59 And LeadPostil is null’, $conn, 1, 1);
$count = $rs->RecordCount;
echo “共有{$count}条纪录<br />”;
for($i = 0; $i < $count ; $i++){

$arr_result[$i]['Title'] = addslashes($rs->Fields(‘Title’)->Value);//标题
$arr_result[$i]['Color'] = addslashes($rs->Fields(‘titlecolor’)->Value?$rs->Fields(‘titlecolor’)->Value:”);//标题颜色
$arr_result[$i]['WenHao'] = addslashes($rs->Fields(‘OtherText’)->Value);//文号

}

2.ODBC连接mssql

 代码如下 复制代码

$dbhost = ”;
$dbuser = ”; //你的mssql用户名
$dbpass = ”; //你的mssql密码
$dbname = ”; //你的mssql库名

$connect=odbc_connect(“Driver={SQL Server};Server=$dbhost;Database=$dbname”,”$dbuser”,”$dbpass”);
$sql=”select * from content”;
$exec=odbc_exec($connect,$sql);
while($row = (odbc_fetch_array($exec)))
{
$row['id']   //?取字段值

}

scws这样的中文分词插件比较不错,简单的学习了一下。它包涵一些专有名称、人名、地名、数字年代等规则集合,可以直接将语句按这些规则分开成一个一个关键词,准确率在90%-95%之间。按照安装说明把scws的扩展放入php的扩展目录里,下载规则文件和词典文件,并在php配置文件中引用它们,就可以用scws进行分词了

 

1) 修改 php 扩展代码以兼容支持 php 5.4.x
2) 修正 php 扩展中 scws_get_tops 的 limit 参数不允许少于 10 的问题
3) libscws 增加 scws_fork() 从既有的 scws 实例产生分支并共享词典/规则集,主要用于多线程开发。
4) 新增部分版本的 win32 的 dll 扩展

 代码如下 复制代码


<?php
//实例化分词插件核心类
$so = scws_new();
//设置分词时所用编码
$so->set_charset(‘utf-8’);
//设置分词所用词典(此处使用utf8的词典)
$so->set_dict('/path/dict.utf8.xdb');
//设置分词所用规则
$so->set_rule('/path/rules.utf8.ini ');
//分词前去掉标点符号
$so->set_ignore(true);
//是否复式分割,如“中国人”返回“中国+人+中国人”三个词。
$so->set_multi(true);
//设定将文字自动以二字分词法聚合
$so->set_duality(true);
//要进行分词的语句
$so->send_text(“欢迎来到火星时代IT开发”);
//获取分词结果,如果提取高频词用get_tops方法
while ($tmp = $so->get_result())
{
  print_r($tmp);
}
$so->close();
?>

注:如以上例子,输入的文字,词典,规则文件这三者的字符集必须统一;另外mysql 4.XX有的是不支持中文全文搜索的,可以存入关键字对应的区位码以方便全文搜索。

版本列表

版本 类型 平台 性能 其它
SCWS-1.1.x C 代码 *Unix*/*PHP* 准确: 95%, 召回: 91%, 速度: 1.2MB/sec
PHP扩展分词速度: 250KB/sec [下载] [文档] [安装说明]
php_scws.dll(1) PHP扩展库 Windows/PHP 4.4.x 准确: 95%, 召回: 91%,
php_scws.dll(2) PHP扩展库 Windows/PHP 5.2.x 准确: 95%, 召回: 91%,
php_scws.dll(3) PHP扩展库 Windows/PHP 5.3.x 准确: 95%, 召回: 91%, 
php_scws.dll(4) PHP扩展库 Windows/PHP 5.4.x 准确: 95%, 召回: 91%,
PSCWS23 PHP源代码 不限 (不支持UTF-8) 准确: 93%, 召回: 89%,
PSCWS4 PHP源代码 不限 准确: 95%, 召回: 91%,

我们知道mssql不像php那样可以使用time哦,他生成的是时间格式DateTime这样就显示不对了,如下
 代码如下 复制代码

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC))
 {
   print_r($row['datetime']);//这个字段是mssql的时间格式

}

结果是

DateTime Object
(
    [date] => 2011-10-20 00:00:00
    [timezone_type] => 3
    [timezone] => Asia/Chongqing
)

解决办法

第一个方法:php文档开头定义ini_set(”mssql.datetimeconvert”,0);

第二个方法:修改php.ini,找到;mssql.datetimeconvert = On ,去掉前面的分号,修改on为off。

第三个方法:只有把mssql的时间字段用convert函数转换成字符串。

比如 SELECT *,convert(char,datetime字段,120) as str_datetime FROM 表名

这个str_datetime就是字符串了。第三个参数为120,刚好是我们需要的格式 yyyy-mm-dd hh:ii:ss

今天在windows中配置了php mysql环境,很高兴测试一段代码结果提示Call to undefined function mysql_connect()这证明数据库配置不成功哈。
 代码如下 复制代码

<?php

$conn = mysql_connect('localhost','root','password');

var_dump($conn);

?>

基本就是改配置文件php.ini 

首先要确保php.ini中extension_dir = "./ext",该设置是php引用dll的目录;

1.将php文件夹下libmysql.dll和php5ts.dll两个文件拷贝至windows目录下的system32下;或者在环境变量中增加D:php;D:phpext。这两个目录是php的安装目录和扩展dll的目录。
2.修改windows安装目录下的php.ini 去掉;extension=php_mysql.dll前面的分号;
3.extension_dir = "d:phpext (文件在PHP.INI中)。

你看看你的php.ini的配置找到

 代码如下 复制代码

extension=php_mysql.dll
extension=php_mysqli.dll把前面的分号去掉


我用的是apache,所以如果还这行的话,再看看主配置文件里的路径和引用都设置好了没有  PHPIniDir "PHP.INI的路径"   还要加一句  LoadModule*************的内容  这个网上都可以找得到。一般情况下到这里基本可以解决。

找到你的PHP根目录,找到两个文件 libmysql.dll和php5ts.dll 将之复制到system32下面。记住是PHP下面的。不是MYSQL

PHPEXCEL是一个用来生成excel的php插件,他可以很方便的对excel数据进行操作,如:生成excel,修改excel数据等等。

一、PHPEXCEL简介

PHPEXCEL提供了一系列的API,能够解析与生成excel,pdf之类的文档。

PHPEXCEL虽然强大,不过使用起来相对有些繁锁,如果需要输出较为复杂格式时,是一个不错的选择。可以到官方下载到源码。

二、PHPEXCEL部分函数

设置当前的工作簿,返回该工作簿对象:
$excelSheet = $excel->setActiveSheetIndex(0);

合并单元格,返回该单元格对象,以下示例即合并A列第一行与第二行所在单元格:

 代码如下 复制代码

$excelSheet->mergeCells('A1:A2');

设置单元格的值,参数:单元格名称,值:
$excelSheet->setCellValue('A1', '字符串内容');
$excelSheet->setCellValue('A2', 26); //数值
$excelSheet->setCellValue('A3', true); //布尔值
$excelSheet->setCellValue('A4', '=SUM(A2:A2)'); //公式

phpexcel用法介绍

 

 代码如下 复制代码

include ‘PHPExcel.php’;

  include ‘PHPExcel/Writer/Excel2007.php’;

  //或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的

  创建一个excel

  $objPHPExcel = new PHPExcel();

  保存excel—2007格式

  $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

  //或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式

  $objWriter->save(”xxx.xlsx”);

  直接输出到浏览器

  $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

  header(”Pragma: public”);

  header(”Expires: 0″);

  header(”Cache-Control:must-revalidate, post-check=0, pre-check=0″);

  header(”Content-Type:application/force-download”);

  header(”Content-Type:application/vnd.ms-execl”);

  header(”Content-Type:application/octet-stream”);

  header(”Content-Type:application/download”);;

  header(’Content-Disposition:attachment;filename=”resume.xls”‘);

  header(”Content-Transfer-Encoding:binary”);

  $objWriter->save(’php://output’);

  

——————————————————————————————————————–

  设置excel的属性:

  

 代码如下 复制代码

创建人

  $objPHPExcel->getProperties()->setCreator(”Maarten Balliauw”);

  最后修改人

  $objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);

  标题

  $objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);

  题目

  $objPHPExcel->getProperties()->setSubject(”Office 2007 XLSX Test Document”);

  描述

  $objPHPExcel->getProperties()->setDescription(”Test document for Office 2007 XLSX, generated using PHP classes.”);

  关键字

  $objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);

  种类

  $objPHPExcel->getProperties()->setCategory(”Test result file”);

  ——————————————————————————————————————–

  设置当前的sheet

  $objPHPExcel->setActiveSheetIndex(0);

  设置sheet的name

  $objPHPExcel->getActiveSheet()->setTitle(’Simple’);

  设置单元格的值

  $objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘String’);

  $objPHPExcel->getActiveSheet()->setCellValue(’A2′, 12);

  $objPHPExcel->getActiveSheet()->setCellValue(’A3′, true);

  $objPHPExcel->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);

  $objPHPExcel->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);

  合并单元格

  $objPHPExcel->getActiveSheet()->mergeCells(’A18:E22′);

  分离单元格

  $objPHPExcel->getActiveSheet()->unmergeCells(’A28:B28′);


 三、PHPEXCEL举例应用


整个代码如下(值得注意的是表头用了$orderCellData记录了每个商户编号的顺序,为了在表体把对应的数据取出):

 代码如下 复制代码

<<?php

   

    require_once '../../../libs/PHPExcel/Classes/PHPExcel.php';

    require_once '../../../libs/PHPExcel/Classes/PHPExcel/Writer/Excel5.php';

    include_once '../../../libs/PHPExcel/Classes/PHPExcel/IOFactory.php';

    include '../common/config.php';

    // 创建一个处理对象实例(此对象对于2003 2007是相同的)

    $objExcel = new PHPExcel();

   

    //设置属性(这段代码无关紧要,其中的内容可以替换为你需要的)

    $objExcel->getProperties()->setCreator("office 2003 excel");

    $objExcel->getProperties()->setLastModifiedBy("office 2003 excel");

    $objExcel->getProperties()->setTitle("Office 2003 XLS Test Document");

    $objExcel->getProperties()->setSubject("Office 2003 XLS Test Document");

    $objExcel->getProperties()->setDescription("Test document for Office 2003 XLS, generated using PHP classes.");

    $objExcel->getProperties()->setKeywords("office 2003 openxml php");

    $objExcel->getProperties()->setCategory("Test result file");

   

    //开始处理数据(索引从0开始)

    $objExcel->setActiveSheetIndex(0);

 

    $conn = mssql_connect($config['mssql']['host'],$config['mssql']['user'],$config['mssql']['password']);

    mssql_select_db($config['mssql']['dbname'],$conn);

   

    $tm=$_REQUEST['tm'];

   

    $sql = "exec HNow05_getTTSpace '','".$tm."','',1";

    $sql=mb_convert_encoding($sql,'GBK','UTF-8');

    $res=mssql_query($sql);

 

    $i=0;

    $k = array('站码','站名','河系','来报时间','水位','水势');

    $count = count($k);

    $arrs = array('A','B','C','D','E','F');

    //添加表头

    for($i=0;$i<$count;$i++){

       $objExcel->getActiveSheet()->setCellValue($arrs[$i]."1", "$k[$i]");

      

    }

   

    /*--------从数据库读取数据-------*/

    $i=0;

    while($arr=mssql_fetch_array($res))

    {

       $stcd = $arr["STCD"];

       $stnm = $arr["STNM"];

       $rvnm = $arr["RVNM"];

       $tm= $arr["TM"];

       $tdz= $arr["TDZ"];

        $tdptn= $arr["TDPTN"];

       if($tdptn=='6'){

           $tdptn='平';

       }else if($tdptn=='5'){

           $tdptn='涨';

       }else if($tdptn=='4'){

           $tdptn='落';

       }

 

       $u1=$i+2;

       $stnm=iconv("GBK","utf-8",$stnm);

       $rvnm=iconv("GBK","utf-8",$rvnm);

       $tm=iconv("GBK","utf-8",$tm);

 

       /*----------写入内容-------------*/

       $objExcel->getActiveSheet()->setCellValue('a'.$u1, "$stcd");

       $objExcel->getActiveSheet()->setCellValue('b'.$u1, "$stnm");

       $objExcel->getActiveSheet()->setCellValue('c'.$u1, "$rvnm");

       $objExcel->getActiveSheet()->setCellValue('d'.$u1, "$tm");

       $objExcel->getActiveSheet()->setCellValue('e'.$u1, "$tdz");

       $objExcel->getActiveSheet()->setCellValue('f'.$u1, "$tdptn");

 

       $i++;

    }

 

    /*----------设置单元格边框和颜色-------------*/

    $rows = mssql_num_rows($res);

    for($i=0;$i<($rows+1);$i++){

       for($j=0;$j<$count;$j++){

           $a = $i+1;

           $objExcel->getActiveSheet()->getStyle($arrs[$j].$a)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

           $objExcel->getActiveSheet()->getStyle($arrs[$j].$a)->getBorders()->getAllBorders()->getColor()->setARGB('FF00BBcc');

           //水平居中

           $objExcel->getActiveSheet()->getStyle($arrs[$j].$a)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

       }

    }

 

    // 高置列的宽度

    $objExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

    $objExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);

    $objExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);

    $objExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);

    $objExcel->getActiveSheet()->getColumnDimension('E')->setWidth(10);

    $objExcel->getActiveSheet()->getColumnDimension('F')->setWidth(10);

   

    // 设置页眉和页脚。如果没有不同的标题奇数/即使是使用单头假定.

    $objExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BPersonal cash register&RPrinted on &D');

    $objExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objExcel->getProperties()->getTitle() . '&RPage &P of &N');

   

    // 设置页方向和规模

    $objExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);

    $objExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

   

    // 重命名表

    $objExcel->getActiveSheet()->setTitle('实时潮汐情况');

   

    // Set active sheet index to the first sheet, so Excel opens this as the first sheet

    $objExcel->setActiveSheetIndex(0);

   

    // Redirect output to a client’s web browser (Excel5)保存为excel2003格式

    //设置Excel的名字

    $excelName = '实时潮汐情况('.$tm.')';

    //$excelName = 'Excel_'.date("YmdHis");

    header('Content-Type: application/vnd.ms-excel');

    header('Cache-Control: max-age=0');

    header( 'Content-Disposition: attachment; filename='.iconv("utf-8", "GBK", $excelName).'.xls');

    $objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');

    $objWriter->save('php://output');


    exit;


?>

[!--infotagslink--]

相关文章

  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • C#查询SqlServer数据库并返回单个值的方法

    这篇文章主要介绍了C#查询SqlServer数据库并返回单个值的方法,涉及C#操作SQLServer数据库查询的相关技巧,需要的朋友可以参考下...2020-06-25
  • SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法

    这篇文章主要介绍了SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法,需要的朋友可以参考下...2020-07-11
  • js有序数组的连接问题

    1.前言 昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题。但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件。2.简单但效率不高的算法 我首先想到的是使用...2013-10-04
  • C#实现Excel表数据导入Sql Server数据库中的方法

    这篇文章主要介绍了C#实现Excel表数据导入Sql Server数据库中的方法,结合实例形式详细分析了C#读取Excel表数据及导入Sql Server数据库的具体操作步骤与相关操作技巧,需要的朋友可以参考下...2020-06-25
  • C#连接到sql server2008数据库的实例代码

    这篇文章主要介绍了C#连接到sql server2008数据库的实例代码,需要的朋友可以参考下...2020-06-25
  • SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息

    SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 'WIN-8IVSNAQS8T7\Administrator' 的信息,错误代码 0x534。 [SQLSTATE 42000] (ConnIsLoginSysAdmin)...2021-07-15
  • C#连接Oracle数据库字符串(引入DLL)的方式

    这篇文章主要给大家介绍了关于C#连接Oracle数据库字符串(引入DLL)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • A789如何连接无线网络上网

    A789使用过程中,一般有两种途径满足上网的需求,一是通过手机卡上网,一是通过周边存在的无线网络上网。不论上网的速度、还是从需求的费用看,通过无线网络上网都具有绝对的...2016-09-20
  • C#编程实现连接SQL SERVER数据库实例详解

    这篇文章主要介绍了C#编程实现连接SQL SERVER数据库的方法,以实例形式较为详细的分析了C#连接SQL SERVER数据库的相关步骤与具体实现技巧,需要的朋友可以参考下...2020-06-25
  • MySQL远程连接不上的解决方法

    这篇文章主要为大家详细介绍了MySQL远程连接不上的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-26
  • SQL SERVER迁移之更换磁盘文件夹的完整步骤

    这篇文章主要给大家介绍了关于SQL SERVER迁移之更换磁盘文件夹的完整步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • CentOS8安装SQLServer2019的过程

    这篇文章主要介绍了CentOS8安装SQLServer2019的步骤,本文通过命令实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • SqlServer 数据库 三大  范式

    本文将基于三大范式原则,结合具体的实例做简要分析,对SqlServer 数据库 三大 范式相关知识感兴趣的朋友一起看看吧...2020-07-11
  • vscode通过Remote SSH远程连接及离线配置的方法

    这篇文章主要介绍了vscode通过Remote SSH远程连接及离线配置的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
  • 解决阿里云ssh远程连接短时间就会断掉的问题

    这篇文章主要介绍了阿里云ssh远程连接短时间就会断掉的解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • Ubuntu Server 18.04.5 LTS服务器版安装配置图解教程

    Ubuntu分为桌面版(desktop)和服务器版(Server),下面为大家介绍服务器版本Ubuntu Server 18.04.5 LTS的详细安装过程,需要的朋友可以参考下...2021-02-01
  • sql server日志处理不当造成的隐患详解

    这篇文章主要给大家介绍了关于sql server日志处理不当造成的隐患的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用sql server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-07-11
  • SQL server 自增ID--序号自动增加的字段操作

    这篇文章主要介绍了SQL server 自增ID--序号自动增加的字段操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-08