PHP连接Sybase IQ数据库

                                             

平台:Sybase IQ/15.4.0  Linux 5.5 - x86_64  PHP5.5.3 

(把平台列出来是很有必要的)

目前网上关于PHP连接Sybase 数据库的资料很少,可能也是有些人不愿发文共享吧。这里我把自己的一些开发

经验与大家共享。希望对大家有所帮助。

首先要编译安装PHP支持Sybase,详细见我的博客http://blog.csdn.net/ajinnv/article/details/11598569

为了以后软件更换数据库方便,这里使用adodb5.0作为php连接sybase数据库的工具。

关于adodb5.0介绍(从网上摘录):

虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API)。为了填补这个缺憾,因此才有 ADODB 的出现。一旦存取数据库的接口予以标准化,就能隐藏各种数据库的差异,若欲转换至其它不同的数据库,将变得十分容易。


目前 ADODB 支持的数据库种类非常地多,例如:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, Sybase, DB2 以及一般的 ODBC (其中 PostgreSQL、Informix、Sybase 的driver 是由自由软件社群发展之后贡献出来的)。
使用 ADODB 最大的优点之一是:不管后端数据库如何,存取数据库的方式都是一致的,开发设计人员不必为了某一套数据库,而必须再学习另一套不同的存取方法,这大大减轻开发人员的知识负担,过去的知识往后仍可继续使用,转移数据库平台时,程序代码也不必做太大的更动。

网上关于adodb的中文手册(有兴趣的可以看下)

http://linux.chinaitlab.com/manual/database/adodb1.99.html

首先下载adodb 然后安装,所谓的安装就是复制adodb文件夹到网站根目录就行了。下面利用adodb

<?php
// 引入 adodb 
include('adodb/adodb.inc.php');
// 对象建立
$conn = &ADONewConnection('mysql');
// 要不要显示错误信息,false 不要,true 要。
// $conn->debug = false;
$conn->debug = true;
// 连接数据库
// 用法:$conn->Connect('主机', '使用者', '密码', '数据库');
//非持续性连接

$conn->Connect('localhost', 'piza', 'ooo123', 'test');
// 若欲采用持续性连接,上式可换用 PConnect:
// $conn->PConnect('localhost', 'piza', 'ooo123', 'test');

if (!$rs) 

print $conn->ErrorMsg(); 

else print "Database Connect Succeful!";

// 设定 sql 命令
$sql = "insert into t values ('abcde', 18)";
// 执行 sql 命令
$rs = $conn->Execute($sql);
// 检查执行结果,若 $rs == false,则呼叫 $conn 对象的成员函式 ErrorMsg()

?> 

---------------------------------------------------------------------

上面是连接MySQL的示例,但是没有Sybase的。于是大家就模仿上面的连接代码

<?php

   include_once("../adodb5/adodb.inc.php");
   $db = NewADOConnection('sybase');  
   $db->Connect("localhost", "user01","password123","DBname01") or die("Failed to connect to database");
   //$db->Execute("set names 'GBK'");
 ?>

或者:

<?php
   include_once("../adodb5/adodb.inc.php");
   $db = NewADOConnection('sybase');
   $db->Connect("192.168.1.153:2640", "user01","password123","DBname01") or die("Failed to connect to database");
   //$db->Execute("set names 'GBK'");
 ?>

但是按这样做后发现老是报错,报错信息为

-------------------------------------------------------------------------------------------------------

ct_connect(): 目录服务层: 内部目录控制层错误: 要求的服务器名没找到.

-----------------------------------------------------------------------------------------------------

网上搜索找不到答案,官方文档上也没发查。

后来查了php手册发现,MySQL的连接和Sybase的连接完全是不一样的。正确的方式应该是:

<?php

   include_once("../adodb5/adodb.inc.php");
   $db = NewADOConnection('sybase');
   $db->Connect("DBserverName", "user01","password123","DBname01") or die("Failed to connect to database");
   //$db->Execute("set names 'GBK'");
 ?>

也即:

  $db->Connect("服务名", "用户名","密码","数据库名")

  第一个参数根本不是填什么主机,IP+端口!!!

---------------------------------------------------

关于服务名可以查看interfaces 中配置

[root@JK02 ~]$ more /sybaseiq/asiq15/interfaces
wkiq0
        master tcp ether 192.168.100.68 2638
        query tcp ether 192.168.100.68 2638
wkiq1
        master tcp ether 192.168.100.68 2640
        query tcp ether 192.168.100.68 2640
wqdb1
       master tcp ether 192.168.100.35 2640
       query tcp ether 192.168.100.35  2640
wqdb2
       master tcp ether 192.168.100.144 2640
       query tcp ether 192.168.100.144  2640
DBserverName
       master tcp ether 192.168.100.143 2640
       query tcp ether 192.168.100.143  2640


查看数据库名:

1> select current database from dummy
2> go
 current database                                                                                                                                                                                                                                            
 ---------------------------------------------------------------- 
DBname01                                                                                                                                                                                                                                这一切做好之后,就可以进行PHP与Sybase 数据库的开发了(^_^)          


             


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值