PHP如何连接mssql一个实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP如何连接mssql一个实例相关的知识,希望对你有一定的参考价值。

项目要求连接到一个实例,如果只填127.0.0.1是可以的,但加上\abc就不行了,\abc是mssql的一个实例,项目要求一定要连接到一个实例,在php中如何指定实例,PHP版本是5.4.5$serverName = "127.0.0.1\abc";$connectionInfo = array( "Database"=>"test", "UID"=>"sa", "PWD"=>"123456");$conn = sqlsrv_connect( $serverName, $connectionInfo );if( $conn === false ) die( print_r( sqlsrv_errors(), true));

数据库查询不外乎4个步骤,1、建立连接。2、输入查询代码。3、建立查询并取出数据。4、关闭连接。 php连接mssql数据库有几个注意事项,尤其mssql的多个版本、32位、64位都有区别。
首先,php.ini文件中;extension=php_pdo_mssql.dll ;extension=php_pdo_odbc.dll 前面的分号去掉,对应的使哪种方式连接mssql。注意要重启服务使其生效。
一、建立连接
1、odbc
首先,在php程序所在的服务器设置odbc。这里32位和64位操作系统有区别。32位的从控制面板中管理工具中的数据源(odbc)直接建立就可以了,64位的要运行C:\\Windows\\SysWOW64\\odbcad32.exe
从这里面设置。注意:上面只的是数据库服务器为32为的,数据源设置服务器为32位和64位两种的情况。只要两个服务器建立的数据源位数一致就好。
下面是odbc建立连接代码。
复制代码 代码如下:

$con = odbc_connect(\'odbc名称\',\'用户名\',\'密码\');

2、连接mssql2000
复制代码 代码如下:

$con = mssql_connect(\'数据库地址\',\'用户名\',\'密码\');
3、连接mssql2008
复制代码 代码如下:

$connectionInfo = array("UID"=>用户名,"PWD"=>密码,"Database"=>"数据库名称");
$con = sqlsrv_connect( 数据库地址,$connectionInfo);
二、输入查询代码
这个都一样,可以直接写入,也可以从mssql中验证好后复制过来。简单点说就是把一个sql语句赋值给一个变量。
类似下面代码
复制代码 代码如下:

$query = "SELECT top 12 * 数据库名称 order by id desc";

三、建立查询并取出数据
1、odbc
复制代码 代码如下:

$result = odbc_do($con,$query);
while(odbc_fetch_row($result))

$变量名称 = odbc_result($result, "字段名称");


2、连接mssql2000
复制代码 代码如下:

$result = mssql_query($con, $query);
while($row =mssql_fetch_array($result))

$变量名称 = $row["字段名称"];


3、连接mssql2008
复制代码 代码如下:

$result = sqlsrv_query($con, $query);
while($row = sqlsrv_fetch_array($result))

$变量名称 = $row["字段名称"];


在php5.3及以后的版本中不附带sqlsrv库了。所以要从微软这里下载。
四、关闭连接
这个没有什么区别,分别是odbc_close();和mssql_close()和sqlsrv_close();
最后体会:php连接mssql比连接mssql的函数少了一些,但是也够用了。具体函数可以参考php官方手册
参考技术A

你这样填参数是不对的啊,127.0.0.1是数据库所在的服务器域名或者ip,为什么要加上abc呢,你可以再确认一下,希望对你有帮助

追问

abc是mssql的一个实例,项目要求一定要连接到一个实例

追答

是实例也是由多端口决定的啊,怎么会是一个abc的名称呢

追问

参考技术B

你的写法没问题,不过可以试试指定端口((local)\\abc,1433)

另外 ,连接不上有错误信息吗?错误信息发出来看看

我试了下,php连接sqlsrv除了安装sqlsrv的扩展外还需要安装 odbc驱动 ,在微软sqlsrv for php  有介绍 ,根据你下载的 sqlsrv扩展版本安装 odbc驱动

参考技术C 只填127.0.0.1就可以了,这是服务器的ip地址,意思是本机
加abc做什么?
程序放在abc目录,这个连接也是填127.0.0.1就好,不用改追问

abc是mssql的一个实例,项目要求一定要连接到一个实例

追答

array( "Database"=>"test", "UID"=>"sa", "PWD"=>"123456");

其中的test是数据库名称,你这个abc是数据库名称吧

参考技术D <?php
$host='127.0.0.1';
$user='root';
$password='root';
$dbName='php';
$link=new mysqli($host,$user,$password,$dbName);
if ($link->connect_error)
die("连接失败:".$link->connect_error);

$sql="select * from admins";
$res=$link->query($sql);
$data=$res->fetch_all();
var_dump($data);

php 连接 mssql sql2008

摘要

sql server 2008

1.下载微软提供的dll

下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=20098

php5.4需下载 SQLSRV30.EXE,这个exe是一个自解压文件,下载后双击选路径解压会得到一堆dll和说明文件。

2、将对应自己php版本的dll文件copy到php ext目录下

ts是指线程安全(ThreadSafe),nts是指线程不安全,得根据安装的php版本来选择,如果不确定,就分别尝试一下;

我用的php5.4,就将php_sqlsrv_54_ts.dll复制到ext目录下,

例如:D:\Program Files\PHP 5.4\ext

3、修改php.ini文件

增加二行:extension=php_pdo_sqlsrv_54_ts.dll

                      extension=php_sqlsrv_54_ts.dll

修改一行 :   mssql.secure_connection = Off  改为on

4、重启apache

5、配置MS SQL Server2005

a、打开 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议;

b、启用“Named Pipes”和“TCP/IP”,默认是已禁用的;

c、右键点击“TCP/IP”,选择“属性”,选择“IP地址”,在”ALLIP“下的“TCP动态端口”后填写1433;

d、重启SQL Server。

备注:记得开启sa登录。

6、安装Microsoft SQL Server 2012 Native Client.msi

根据自己系统在PHP服务器所在机器安装Microsoft SQL Server 2012 Native Client.msi,分X64和X86的。

下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=29065 

此工具不支持XP系统哦,所以XP去用PHP5.3吧~

另外这个是安装在php环境的的服务器下面 PS:不是独立数据库服务器的请自动忽略。

7、php数据库代码

<?php
/*连接数据库,5.4的函数不再是mssql_connect了:*/
$conInfo=array("Database"=>"att2008", "UID"=>"att2008", "PWD"=>"att2008");
$conn=sqlsrv_connect("127.0.0.1", $conInfo);
 
/*判断连接成功与否:*/
if( $conn == false )
{
die( print_r( sqlsrv_errors(), true));
}
else
{
echo("yes<br>");
}
 
$table_name = "USERINFO";
/*如果你牛叉的数据库表名是中文,记得加上这句:*/
//$table_name = iconv("UTF-8", "GB2312", "牛叉的中文表名");
/*query语句:*/
$rs=sqlsrv_query($conn, "select * from ".$table_name);
 
if($rs == false)
{
echo("false<br>");
}
else
{
while($row = sqlsrv_fetch_array($rs))
{
print_r($row);
}
sqlsrv_free_stmt($rs);
sqlsrv_close($conn);
}
?>

8,至此,网上教程复制完毕,但是该方法不支持XP系统!(我使用的是phpstudy,非常便捷的一体式多合一服务)

但是该方法中开启了mssql.php,于是使用以下代码可以在XP中连接sql2008

<?php
$server ="LPP-20140312390\s2008";  //服务器IP地址,如果是本地,可以写成localhost,本例是多个实例
$uid ="sa";  //用户名
$pwd ="sql2008"; //密码
$database ="test";  //数据库名称
 
//进行数据库连接
$conn =mssql_connect($server,$uid,$pwd) or die ("connect failed");
mssql_select_db($database,$conn);

//执行查询语句
$query ="select * from demo";
$row =mssql_query($query);
 
//打印输出查询结果
while($list=mssql_fetch_array($row))
{
       print_r($list);
       echo "<br>";
}
//PDO连接不成功,没有微软的库,2012库不在支持XP
//    $conn = new PDO( "sqlsrv:Server=(LPP-20140312390\s2008);Database=test", "sa", "sql2008"); 
//    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );



// $query = ‘select * from demo‘; 
// $stmt = $conn->query( $query ); 
// while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){ 
//    print_r( $row ); 
// }

9,xp系统中连接SqlServer2008

9.1同样下载http://www.microsoft.com/en-us/download/details.aspx?id=20098

找到sqlsrv20,这里面是支持xp的DLL,支持范围包括5.3,5.2,不支持5.4,其中nt是线程安全,v6v9意思是apache是哪种语言编写的,是c++9还是c++6,这个安装的时候提示错误 就更改一个

下载Microsoft SQL Server 2008 Native Client.msi,这个是必须的

9.2重启服务器

测试代码

<?php
//PDO连接方式
 // $conn = new PDO( "sqlsrv:Server=LPP-20140312390\S2008;Database=CDTXYYBJP", "sa", "sql2008"); 
try {
   $conn = new PDO( "sqlsrv:Server=LPP-20140312390\S2008;Database=CDTXYYBJP", NULL, NULL); 
   $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}

catch( PDOException $e ) {
   die( "Error connecting to SQL Server" ); 
}

echo "Connected to SQL Server\n";

$query = ‘Select * From sysobjects ‘; 
$stmt = $conn->query( $query ); 
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){ 
   p( $row ); 
}



// /* Specify the server and connection string attributes. */
// $serverName = "LPP-20140312390\s2008";
// $connectionInfo = array( "Database"=>"CDTXYYBJP");

// /* Connect using Windows Authentication. */
// $conn = sqlsrv_connect( $serverName, $connectionInfo);
// if( $conn === false )
// {
//      echo "Unable to connect.</br>";
//      die( print_r( sqlsrv_errors(), true));
// }

//  Query SQL Server for the login of the user accessing the
// database. 
// $tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
// $stmt = sqlsrv_query( $conn, $tsql);
// if( $stmt === false )
// {
//      echo "Error in executing query.</br>";
//      die( print_r( sqlsrv_errors(), true));
// }

// /* Retrieve and display the results of the query. */
// $row = sqlsrv_fetch_array($stmt);
// echo "User login: ".$row[0]."</br>";

// /* Free statement and connection resources. */
// sqlsrv_free_stmt( $stmt);
// sqlsrv_close( $conn);

 

以上是关于PHP如何连接mssql一个实例的主要内容,如果未能解决你的问题,请参考以下文章

PHP连接MSSQL数据库的方法,PHPWAMP如何连接MSSQL数据库(极度详细)

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

PHP连接mssql问题

忽略 PHP 到 MSSQL 连接中的记录行

如何用PHP连接SQL Server

IIS 上的 MSSQL 和 PHP 5.3.5 之间的连接不起作用