使用PHP访问MSSQL SERVER数据库小结
时间:2007-09-25 来源:jinglianlee
自学了两天PHP,感觉不错,昨晚突然头脑发热,准备给家里的医药销售软件做个功能扩展。那个软件买得旧了,做购货计划时,只能从库存页面一行一行的看(5000多行,眼都要看花),而且还不能对药品名称排序(它是按基本信息录入的时间顺序显示的),同名不同产地的是前面有显示,中间有显示,后面也有显示,经常是进了货,入库的时候才发现买重复了,其他产地的还有,数量还挺大,该买的却又没买。而且那软件还有连接限制(限制3台,局域网内共有四台,用一台作为服务器,放在办公室,当在服务器上做采购计划的时候,外边销售就只有两台能用)。
所以我想做一个“库存上下限报警表单”通过查询数据库自动生成,降低做采购计划时的工作量,同时绕过那个软件的连接限制。
那个软件用的是MSSQL SERVER 2000,我买的PHP书上讲的都是MySQL,在网上查了查,好少,下了PHP手册,翻译了几个小时的英文,终于能访问能用了,呵呵^_^。下面是我理解的一些用PHP访问MSSQL SERVER 2000的方法给大家探讨,交流一下。
1、首先是准备工作:
在Windows下通过PHP访问MSSQL SERVER 2000,可以有两种方式,
(1)利用COM
(2)一种是使用MSSQL_系列函数
要使用这两种都需要在php.ini进行设定:
(1)允许 DCOM,需要将php.ini中的 ;com.allow_dcom=TRUE前的分号";"去掉。
(2)使用MSSQL扩展,需要php.ini中的 ;extension=php_mssql.dll前的分号";"去掉。
(3)确认extension_dir为正确路径,以本机为例:extension_dir = "c:\AppServ\php5\ext"。
(4)如果仍然机器报错说找不到c:\AppServ\php5\ext\php_mssql.dll但明明存在这个文件。
解决方法:将php_mssql.dll,ntwdblib.dll拷贝到系统目录\system32下重启测试。。
(注:上面两个dll文件不在相同目录下,我的为c:\AppServ\php5\ext\php_mssql.dll;c:\AppServ\php5\ntwdblib.dll)
另外设置好了后记得重启服务器哦。
我的PHP环境是用AppServ搭建的,我这样做了后,访问MSSQL SERVER一切正常。若你仍然有问题,请查阅PHP手册php.ini的设置。
2、利用COM访问MSSQL SERVER的简单方法
$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
//首先声明一个连接对象
$connstr = "Provider=SQLOLEDB;
Persist Security Info=False;
User ID=youruid;
Password=yourpwd;
Initial Catalog=yourdatabase;
Data Source=127.0.0.1";
//设置连接字符串(很奇怪Data Soure为localhost或服务器名不行总是报错而为(local)或127.0.0.1却行,希望哪个高手帮我说明一下)
$conn->Open($connstr); //建立数据库连接
$sqlstr = "select * from test"; //设置查询字符串
$rs = $conn->Execute($sqlstr); //执行查询获得结果
或者
//$rs = new com("adodb.recordset"); //声明一个数据集对象
//$rs->open($sqlstr,$conn);//,3,3); //获得数据集rcordset内容
$num_cols = $rs->Fields->Count(); //得到数据集列数
while (!$rs->EOF) //输出结果
{
echo $rs->Fields['name']->Value."
"; // 'name'为字段名,需要明确制定
$rs->MoveNext();
或者
//for ($i=0; $i value . "\t";
//}
//echo "\n";
//$rs->MoveNext();
}
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;
3、使用MSSQL_函数访问MSSQL SERVER的简单方法
$hostname = "yourhoustname";
$username = "yourusername";
$password = "yourpassword";
$conn = mssql_connect($hostname,$username,$password) or die("DATABASE FAILED TO RESPOND.");
//建立连接
$dbName = "yourdatabase";
$ret=mssql_select_db($dbName); //选择数据库
$sqlstr = "select * from test"; //设置查询字符串
$result=mssql_query($query); //执行查询获得结果
while($line = mssql_fetch_row($result)) //输出结果
{
echo "$line[0],$line[1]";
//mssql_fetch_row每次返回一个enumerated(列举) array,直到没有数据而返回false
}
或者
//while($row = mssql_fetch_array($result))
//{
//echo $row["name"];
或者
//echo $row[0],$row[1];
//mssql_fetch_array每次返回一个数字索引数组或一个相关数组,直到没有数据而返回false
//}
题外:
关于通过PHP访问MSSQL SERVER的小结就是这些了。希望能对你有所帮助,第一次写又是初学,请你指出,共同进步。
求助:
1、我在设置连接字符串的时候,为什么Data Soure为localhost或服务器名不行总是报错而为(local)或127.0.0.1却行,希望哪个高手帮我说明一下
2、我在设置查询字符串的时候,如何对"LIKE '%-'"(单引号内为一个百分号和一个短横线)进行转义
所以我想做一个“库存上下限报警表单”通过查询数据库自动生成,降低做采购计划时的工作量,同时绕过那个软件的连接限制。
那个软件用的是MSSQL SERVER 2000,我买的PHP书上讲的都是MySQL,在网上查了查,好少,下了PHP手册,翻译了几个小时的英文,终于能访问能用了,呵呵^_^。下面是我理解的一些用PHP访问MSSQL SERVER 2000的方法给大家探讨,交流一下。
1、首先是准备工作:
在Windows下通过PHP访问MSSQL SERVER 2000,可以有两种方式,
(1)利用COM
(2)一种是使用MSSQL_系列函数
要使用这两种都需要在php.ini进行设定:
(1)允许 DCOM,需要将php.ini中的 ;com.allow_dcom=TRUE前的分号";"去掉。
(2)使用MSSQL扩展,需要php.ini中的 ;extension=php_mssql.dll前的分号";"去掉。
(3)确认extension_dir为正确路径,以本机为例:extension_dir = "c:\AppServ\php5\ext"。
(4)如果仍然机器报错说找不到c:\AppServ\php5\ext\php_mssql.dll但明明存在这个文件。
解决方法:将php_mssql.dll,ntwdblib.dll拷贝到系统目录\system32下重启测试。。
(注:上面两个dll文件不在相同目录下,我的为c:\AppServ\php5\ext\php_mssql.dll;c:\AppServ\php5\ntwdblib.dll)
另外设置好了后记得重启服务器哦。
我的PHP环境是用AppServ搭建的,我这样做了后,访问MSSQL SERVER一切正常。若你仍然有问题,请查阅PHP手册php.ini的设置。
2、利用COM访问MSSQL SERVER的简单方法
$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
//首先声明一个连接对象
$connstr = "Provider=SQLOLEDB;
Persist Security Info=False;
User ID=youruid;
Password=yourpwd;
Initial Catalog=yourdatabase;
Data Source=127.0.0.1";
//设置连接字符串(很奇怪Data Soure为localhost或服务器名不行总是报错而为(local)或127.0.0.1却行,希望哪个高手帮我说明一下)
$conn->Open($connstr); //建立数据库连接
$sqlstr = "select * from test"; //设置查询字符串
$rs = $conn->Execute($sqlstr); //执行查询获得结果
或者
//$rs = new com("adodb.recordset"); //声明一个数据集对象
//$rs->open($sqlstr,$conn);//,3,3); //获得数据集rcordset内容
$num_cols = $rs->Fields->Count(); //得到数据集列数
while (!$rs->EOF) //输出结果
{
echo $rs->Fields['name']->Value."
"; // 'name'为字段名,需要明确制定
$rs->MoveNext();
或者
//for ($i=0; $i value . "\t";
//}
//echo "\n";
//$rs->MoveNext();
}
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;
3、使用MSSQL_函数访问MSSQL SERVER的简单方法
$hostname = "yourhoustname";
$username = "yourusername";
$password = "yourpassword";
$conn = mssql_connect($hostname,$username,$password) or die("DATABASE FAILED TO RESPOND.");
//建立连接
$dbName = "yourdatabase";
$ret=mssql_select_db($dbName); //选择数据库
$sqlstr = "select * from test"; //设置查询字符串
$result=mssql_query($query); //执行查询获得结果
while($line = mssql_fetch_row($result)) //输出结果
{
echo "$line[0],$line[1]";
//mssql_fetch_row每次返回一个enumerated(列举) array,直到没有数据而返回false
}
或者
//while($row = mssql_fetch_array($result))
//{
//echo $row["name"];
或者
//echo $row[0],$row[1];
//mssql_fetch_array每次返回一个数字索引数组或一个相关数组,直到没有数据而返回false
//}
题外:
关于通过PHP访问MSSQL SERVER的小结就是这些了。希望能对你有所帮助,第一次写又是初学,请你指出,共同进步。
求助:
1、我在设置连接字符串的时候,为什么Data Soure为localhost或服务器名不行总是报错而为(local)或127.0.0.1却行,希望哪个高手帮我说明一下
2、我在设置查询字符串的时候,如何对"LIKE '%-'"(单引号内为一个百分号和一个短横线)进行转义
相关阅读 更多 +
排行榜 更多 +