PHP可以和sql server/oracle等数据库连接吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP可以和sql server/oracle等数据库连接吗相关的知识,希望对你有一定的参考价值。

php可以和sql server/oracle等数据库连接吗?
要是可以的话具体方法是什么,详细点,白话点,谢谢!

Linux下PHP连接MS SQLServer的办法
分析问题
本来PHP脚本读写SQLServer是没有什么问题的,在Apache for windows和Windows IIS下可以工作的很好,一般可以通过ODBC或SQLServer Client连接,这都是Windows下面现成的。但是在Linux下面没有现成的ODBC和SQLServer Client,需要我们自己安装。

解决问题

一、相关软件
freetds-0.53.tgz
这个软件能够用Linux和Unix连接MS SQLServer和Sybase数据库。

二、安装配置步骤

第一步:编译安装freetds:
得到freetds-0.53.tgz后
cp freetds-0.53.tgz /tmp/. (拷贝freetds包到/tmp目录)
cd /tmp (进入目录)
tar zxvf freetds-0.53.tgz (解压)
cd freetds-0.53 (进入解压后目录)
./configure –prefix=/usr/local/freetds --with-tdsver=7.0
gmake (生成Makefile,我试验过,make也可以)
gmake install (安装)
关于上面configure我想说一下,--prefix=/usr/local/freetds是指安装到/usr/local/freetds这个目录中,--with-tdsver=7.0是指安装tds 7.0版本(最开是我没有加这个编译参数,结果按照默认编译为5.0。5.0连接数据库的端口是4000,不是SQLServer的1433)

第二步:重新编译PHP4
./configure [--with-apxs --with-mysql...] --with-sybase=/usr/local/freetds(请注意是sybase)
make
make install
第三步:配置freetds
vi /usr/local/freetds/etc/freetds.conf
具体配置见该文件中的说明
例: (典型配置)
[sqlserver]
host = sql_server_name_or_host_ip (你的SQLServer机器名字或者IP地址)
port = 1433
tds version = 7.0
在这个配置文件中可以配置Windows域登陆或者SQLServer账号登陆两种方式

第四步:配置php.ini文件
找到 ;extension=mssql70.so
将注释;去掉成
extension=mssql70.so

第五步:在php中建立数据库连接
$link=mssql_connect("sqlserver",$your_username,$your_password) or die (“can’t Connect to Database”);
echo $link;
在浏览器中运行上面脚本, 如果你得到一个link号那么恭喜,你已经配置好了,如果出现Call to undefined function: mssql_connect() 那说明仔细看上面的安装配置过程看你哪一步没有对。
注意:sqlserver名称是在/usr/local/freetds/etc/freetds.conf中定义的host参数,如果你写的IP地址,就是IP地址。
其他数据库操作参考相关mssql函数
注意,在sql语句中不支持中文!!!

第六步:调试
如果出现不能连接,请在freetds配置文件中找到;dump file = /tmp/freetds.log这一行,注释掉前面的分号,再执行一下测试脚本,察看/tmp/freetds.log文件,它可以告诉你很多出错的信息帮助你排除问题。

PHP与Oracle数据库连接
PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的PHP安装选项应该可以支持两者的使用。
连接

if ($conn=Ora_Logon("user@TNSNAME","password"))

echo "SUCCESS ! Connected to database\n";

else

echo "Failed :-( Could not connect to database\n";

Ora_Logoff($conn);
phpinfo();
?>

以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。
详细内容
http://hi.baidu.com/普及网/blog/item/3fe4df12c474e9956438db72.html
参考技术A 可以
1、与SQL server连接
$server='ip地址或服务器名';
$username='数据库用户名';
$password='数据库密码';
$database='数据库名';
$conn=mssql_connect($server,$username,$password)
or die("Couldn't connect to SQL Server on $server");
$db=mssql_select_db($database) or die("Couldn't open database $database");
与oracle连接
在这里我给一个网站你参考
http://www.pconline.com.cn/pcedu/empolder/wz/php/10211/108149.html
还有这个
http://wenku.baidu.com/view/d5dd7bd8d15abe23482f4d58.html
希望能帮到你
参考技术B 没问题的。
PHP可以和任何数据库连接,有接口。包括你说的
sql server/oracle
。还有mysql等。
参考技术C 可以的,你搜索几个例子一看就明白了。或者先找一些视频学习一下,有了基础再看示例。 参考技术D 可以 具体做法 这里省略一千字 你懂得 哈哈

linux系统可以使用哪些.so文件对应windows中的.dll文件来连接php到ms sql server

【中文标题】linux系统可以使用哪些.so文件对应windows中的.dll文件来连接php到ms sql server【英文标题】:Which .so files can be used for linux system corresponding to .dll files in windows to connect php to ms sql server 【发布时间】:2016-04-12 22:58:45 【问题描述】:

我在我的 Windows 系统上使用 php5ts.dll 文件来连接 php 和 ms sql 服务器,但我需要为 linux 做同样的事情,但相同的 dll 文件在 linux 上不能像在 Windows 上一样工作。在 Rnd 之后,我知道对应于 windows 中的 dll 文件,我们需要 linux SO question 中的 .so 文件。 我不知道这些 .dll 文件在 php 中的作用是将其连接到 ms sql 服务器。

如果有人能帮助我理解为什么同样的方法不适用于 linux 以及有什么解决方案,那就太好了?

我也遇到了一个相同的问题here,其中用户针对 windows 而不是 linux 提出了类似的问题。

以下是我们用来创建连接的一段代码:

db.driver = "pdo_sqlsrv" db.host = "" db.dbname = "" db.user = "" db.password = ""

驱动文件放在这里D:\wamp\bin\php\php5.4.16 >>php5ts.dllD:\wamp\bin\php\php5.4.16\ext >> php_sqlsrv_54_ts.dll

【问题讨论】:

呃没有 .dll 文件在 linux 上工作。您是否尝试将 Windows Apache/PHP 安装复制到 linux 系统? 这可能会让你开始pointbeing.net/weblog/2010/05/… 是的。我想在 linux 上配置我的项目。我的项目使用 ms sql server 作为数据库,使用 php 作为服务器脚本语言。 第一个问题;如何在 Windows(代码)中连接 sql db。第二个问题:你为 php 和 db 驱动程序使用不同的服务器吗? "The PDO_SQLSRV extension is only compatible with PHP running on Windows. For Linux, see ODBC and » Microsoft's SQL Server ODBC Driver for Linux."。所以看起来你不能在两个平台上使用你选择的驱动程序。我猜你可能应该使用 FreeTDS 或 PDO_ODBC 之类的东西,但我没有任何从 unix PHP 安装连接到 SQL Server 的经验。 【参考方案1】:

要从 linux 机器上的 php5 连接到 Micrsoft SQL 有点不太直观,您实际上需要使用 sybase 扩展和用于 MS SQL 的 pear MDB2 驱动程序。如果由于操作系统限制无法安装 MSSQL 扩展,PHP5 中的 MSSQL 函数实际上是 Sybase 函数的别名。

要解决这个问题,请使用以下命令...

sudo apt-get install php5-sybase
pear install --nodeps MDB2_Driver_mssql

完成后,您可以使用...进行测试

<?php

$server = 'servername';
$username = 'sa';
$password = 'password';
$database = 'xxx';
$connection = mssql_connect($server, $username, $password);

if($connection != FALSE)

echo "Connected to the database server OK<br />";

else

die("Couldn't connect");


if(mssql_select_db($database, $connection))

echo "Selected $database ok<br />";

else

die('Failed to select DB');


$query_result = mssql_query('SELECT @@VERSION');
$row = mssql_fetch_array($query_result);

if($row != FALSE)

echo "Version is $row[0]<br />";

mssql_free_result($query_result);
mssql_close($connection);

【讨论】:

上面提到的我需要安装什么软件:sudo apt-get install php5-sybase, pear install --nodeps MDB2_Driver_mssql 你的linux机器上配置php和ms sql的连接成功了吗?

以上是关于PHP可以和sql server/oracle等数据库连接吗的主要内容,如果未能解决你的问题,请参考以下文章

[ORACE] Oracle trace 之二10046事件

[ORACE] Oracle trace 之二10046事件

使用php将sql server数据转换为json

如何使用xampp将sql server与php连接起来?

PL/SQl和SQL servers是啥关系?他们直接有联系吗?

oracle启动的一些基本命令