thinkphp5访问sql2000数据库
大家都知道php跟mysql是绝配,但是因为有时候工作需要,要求php访问操作sql2000,怎么办呢?
一般来说有两种方式:
1. sqlsrv驱动方式
2. odbc方式
sqlsrv驱动方式,因为微软公司原因,不提供sql2000的访问驱动,只提供了sql2005以上的驱动,所以如果你的数据库是2005以上版本,特别是sql2008r2,到微软官方可以下载到sql2008 for php的驱动,网上有很多文章介绍,我的博客里有篇文章 http://www.cnblogs.com/skysowe/p/5749022.html 专门讨论这个情况;
我工作环境是:php 5.5n(phpstudy) + nginx + tp5.10 + sql2000 + win7(64位)系统
网上搜到了这篇文章http://www.cnblogs.com/huangtailang/p/6485528.html,测试了一下,文章里的方法是可用的:
(一)使用odbc方式在控制器里工作:
<?php
namespace app\index\controller; use PDO; //for pdo odbc sql2000 or sql2008r2 class Index
{
public function index()
{
header('Content-type:text/html; charset=utf-8'); //////////////////////////////////////////////////////
//test sql2000&sql2008r2 pdo
////////////////////////////////////////////////////// $dbname='master';
$username='sa';
$password='yoooko'; //--------------------------------------------------------------ok
//sql2000
$mssqldriver = '{SQL Server}';
$hostname='127.0.0.1\sql2000,1434';
//使用ODBC方式连接
$dbDB = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=$dbname", $username, $password); //-------------------------------------------------------------- //--------------------------------------------------------------ok
//sql2008r2
//$mssqldriver = '{SQ Server Native Client 11.0}';
//$mssqldriver = '{ODBC Driver 11 for SQL Server}';
//$hostname='127.0.0.1\sql2008r2,14333';
//没有安装sqlsrv驱动时无法使用,error:could not find driver
//$dbDB = new PDO("sqlsrv:Server=$hostname;Database=$dbname", $username, $password);
//-------------------------------------------------------------- $sql = "SELECT * FROM cs";
foreach ($dbDB->query($sql) as $row) {
var_dump($row);
} } }
(二)使用database.php + 控制器的方式工作
在database.php里配置:
return [
// 数据库类型
'type' => 'Sqlsrv', //必须输入<br>
// 用户名
'username' => 'sa',
// 密码
'password' => 'yoooko',
// 连接dsn,驱动、服务器地址和端口、数据库名称
'dsn' => 'odbc:Driver={SQL Server};Server=127.0.0.1\sql2000,1434;Database=master',
];
在Index.php控制器里:
<?php
namespace app\index\controller; use think\Db; class Index
{
public function index()
{
header('Content-type:text/html; charset=utf-8'); //$user = Db::table('cs')->select(); //不行,有row_number()错误
$user = Db::query("select * from cs"); //必须使用原生sql方式,正确 echo '<pre>';
print_r($user);
echo '</pre>';
}
}
thinkphp5访问sql2000数据库的更多相关文章
- sql2000数据库置疑造成的原因以及如何解决置疑
造成数据库置疑一般有以下几点: 1)电脑非法关机或者意外停电: 2)磁盘有坏道或者损坏: 3)数据库感染病毒,日志文件损坏: 4)非正常情况下移动数据库文件 5)系统,硬盘,经常强制性关机(如断电)类 ...
- Qt5 开发 iOS 应用之访问 SQLite 数据库
开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1 源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...
- java文件来演示如何访问MySQL数据库
java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...
- 如何配置网络使得宿主机能够访问VM数据库?
https://www.zhihu.com/question/23955166 背景:公司内外网区分,不能同时上,局域网内得手动切换两个网络,分别访问外网或者内网,ip是动态获取的.现在本机上装有vm ...
- .net(C#)访问Oracle数据库的几种免安装组件的对比
Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...
- PHP访问MySql数据库介绍
在网站后台,经常要与数据库打交道.本文介绍如何使用XAMPP来管理MySql数据库及如何用PHP来访问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...
- VS2010添加类失败问题,弹出错误框,提示 CodeModel操作失败,无法访问标记数据库
我在使用VS2010添加类的时候,会弹出一个错误框,提示 CodeModel操作失败,可以无法访问标记数据库 英文版是 CodeModel operation failed,Possibly cann ...
- C#访问postgresql数据库
最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...
- C/C++访问PostgreSQL数据库
编号:1011时间:2016年5月17日09:46:01功能:Windows环境下C/C++访问PostgreSQL数据库https://segmentfault.com/a/119000000062 ...
随机推荐
- 面向对象之property
property功能 以调用数据属性的方式(不用加括号)调用方法 方法定义成数据属性(方法本应该是动词) # 定义property之前 class People: def __init__(self, ...
- delphi之socket通讯
使用了2个组建: TServerSocket TClientSocket ------------------TServerSocket--------------------------- //开启 ...
- 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型
以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...
- shell逻辑运算符 1
逻辑卷标 表示意思 1. 关于档案与目录的侦测逻辑卷标! -f 常用!侦测『档案』是否存在 eg: if [ -f filename ] -d 常用!侦测『目录』是否存在 -b 侦测是否为一个『 bl ...
- QT的文件查找
https://blog.csdn.net/hustyangju/article/details/17784007 http://www.cppblog.com/biao/archive/2011/1 ...
- jQuery解决高度统一问题
<div class="itemdl over"> <dl class="fl"> <dt><img src=&quo ...
- 转 C++11之std::function和std::bind
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...
- io操作的要素
文件 操作. 操作说明 数据
- vector erase
vector::erase 从指定容器删除指定的元素 两个重载: iterator erase (iterator position);删除指定位置position的元素,并返回删除元素的下一个元素的 ...
- Linux CentOS6系统安装最新版本Node.js环境及相关文件配置
Node.js,当前应用非常广泛的Javascript运行环境,采用C++编写的,目前应用较多的用于WEB应用中,执行效率还是非常高的,虽然老左不从业程序的开发,但是有些时候在玩VPS的时候还是会遇到 ...