php5.6使用ODBC链接mssql(包括各版本)例子

作者:袖梨 2022-06-24

php5.3以后无法使用php自带的mssql函数链接mssql。

需要安装微软自带的php_sqlsrv,安装好后一直链接失败。

一、配置ODBC+系统DSN数据源

之后找到【ODBC数据源管理器】(【开始】→【控制面板】→【管理工具】→【数据源(ODBC)】),转到【系统DSN】中,点击【添加】

选择【SQL Server】  —- 【完成】

设置数据源名称【test】(这是你之后用PHP的odbc函数来连接时使用的DSN名称),点击【服务器】下拉框选择服务器(我是手动填写的localhost)

选择认证方式—【下一步】

勾选【更改默认的数据为】→点击下拉框,选择已经建好的数据库—【下一步】之后步骤保持默认设置即可。

点击【测试数据源】,如果返回“测试成功”。就可以了。


一、建立连接

1、odbc

首先,在php程序所在的服务器设置odbc。这里32位和64位操作系统有区别。32位的从控制面板中管理工具中的数据源(odbc)直接建立就可以了,64位的要运行C:WindowsSysWOW64odbcad32.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库了。所以要从微软这里下载。
二、测试页面




Access DB Test


Connect DB Test


//
// 数据库操作函数
//
function deleteAll($conn, $table)
{
$sql = 'DELETE FROM '.$table.' WHERE 1=1';
odbc_exec($conn, $sql);
}
function showAll($conn, $table)
{
$sql = 'SELECT id, bID, bName FROM '.$table;
$rs = odbc_do($conn, $sql);
print '';
print '';
while(odbc_fetch_row($rs))
{
print '';
print '';
print '';
print '';
print '';
}
print '
'.odbc_field_name($rs, 1).''.odbc_field_name($rs, 2).''.odbc_field_name($rs, 3).'
'.odbc_result($rs, 'id').''.odbc_result($rs, 'bID').''.odbc_result($rs, 'bName').'
';
}
function insertTestData($conn)
{
static $i = 0;
for($j = 0; $j < 10; $j++)
{
$insertSql = 'INSERT INTO book (bID, bName) VALUES ('ISBN 7-5325-2480-'.$i.'','测试'.$i++.'')';
odbc_exec($conn, $insertSql);
}
}
function createTable($conn)
{
$tableRs = odbc_tables($conn, null, null, 'book', 'TABLE');
if(odbc_fetch_row($tableRs) )
{
return 'table already exists.';
}
$createSql =
('CREATE TABLE book'.
'('.
'id INT IDENTITY(1, 1) PRIMARY KEY,'.
'bID VARCHAR(30) NOT NULL,'.
'bName NVARCHAR(30) NOT NULL,'.
')'
);
odbc_do($conn, $createSql);
return 'table created!';
}
//
// 测试流程
//
print '
connecting db....
';
$conn = odbc_connect ("test" , "sa", "password", SQL_CUR_USE_ODBC ) or die('fail to connect db');
/**
 * 建表并显示结果
 */
print createTable($conn).'
';
print "Table is :
";
$tableRs = odbc_tables($conn, null, null, 'book', 'TABLE');
while(odbc_fetch_row($tableRs))
{
print odbc_result($tableRs, 'TABLE_NAME').'
';
}
/**
 * 插入测试数据
 */
insertTestData($conn);
print '
插入的数据:
';
showAll($conn, 'book');
/**
 * 删除数据
 */
deleteAll($conn, 'book');
print '删除所有数据之后:
';
showAll($conn, 'book');
/**
 * 关闭数据连接
 */
odbc_close ( $conn );
?>

关闭连接

这个没有什么区别,分别是odbc_close();和mssql_close()和sqlsrv_close();

好了上面的命令就是我们给各位整理的了哦,希望文章能够帮助到各位。

相关文章

精彩推荐