大家都知道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方式在控制器里工作:

  1. <?php
  2. namespace app\index\controller;
  3.  
  4. use PDO; //for pdo odbc sql2000 or sql2008r2
  5.  
  6. class Index
  7. {
  8. public function index()
  9. {
  10. header('Content-type:text/html; charset=utf-8');
  11.  
  12. //////////////////////////////////////////////////////
  13. //test sql2000&sql2008r2 pdo
  14. //////////////////////////////////////////////////////
  15.  
  16. $dbname='master';
  17. $username='sa';
  18. $password='yoooko';
  19.  
  20. //--------------------------------------------------------------ok
  21. //sql2000
  22. $mssqldriver = '{SQL Server}';
  23. $hostname='127.0.0.1\sql2000,1434';
  24. //使用ODBC方式连接
  25. $dbDB = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=$dbname", $username, $password);
  26.  
  27. //--------------------------------------------------------------
  28.  
  29. //--------------------------------------------------------------ok
  30. //sql2008r2
  31. //$mssqldriver = '{SQ Server Native Client 11.0}';
  32. //$mssqldriver = '{ODBC Driver 11 for SQL Server}';
  33. //$hostname='127.0.0.1\sql2008r2,14333';
  34. //没有安装sqlsrv驱动时无法使用,error:could not find driver
  35. //$dbDB = new PDO("sqlsrv:Server=$hostname;Database=$dbname", $username, $password);
  36. //--------------------------------------------------------------
  37.  
  38. $sql = "SELECT * FROM cs";
  39. foreach ($dbDB->query($sql) as $row) {
  40. var_dump($row);
  41. }
  42.  
  43. }
  44.  
  45. }

(二)使用database.php + 控制器的方式工作

在database.php里配置:

  1. return [
  2.  
  3. // 数据库类型
  4. 'type' => 'Sqlsrv', //必须输入<br>
  5.  
  6. // 用户名
  7. 'username' => 'sa',
  8.  
  9. // 密码
  10. 'password' => 'yoooko',
  11.  
  12. // 连接dsn,驱动、服务器地址和端口、数据库名称
  13. 'dsn' => 'odbc:Driver={SQL Server};Server=127.0.0.1\sql2000,1434;Database=master',
  14.  
  15. ];

在Index.php控制器里:

  1. <?php
  2. namespace app\index\controller;
  3.  
  4. use think\Db;
  5.  
  6. class Index
  7. {
  8. public function index()
  9. {
  10. header('Content-type:text/html; charset=utf-8');
  11.  
  12. //$user = Db::table('cs')->select(); //不行,有row_number()错误
  13. $user = Db::query("select * from cs"); //必须使用原生sql方式,正确
  14.  
  15. echo '<pre>';
  16. print_r($user);
  17. echo '</pre>';
  18. }
  19. }

thinkphp5访问sql2000数据库的更多相关文章

  1. sql2000数据库置疑造成的原因以及如何解决置疑

    造成数据库置疑一般有以下几点: 1)电脑非法关机或者意外停电: 2)磁盘有坏道或者损坏: 3)数据库感染病毒,日志文件损坏: 4)非正常情况下移动数据库文件 5)系统,硬盘,经常强制性关机(如断电)类 ...

  2. Qt5 开发 iOS 应用之访问 SQLite 数据库

    开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1   源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...

  3. java文件来演示如何访问MySQL数据库

    java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...

  4. 如何配置网络使得宿主机能够访问VM数据库?

    https://www.zhihu.com/question/23955166 背景:公司内外网区分,不能同时上,局域网内得手动切换两个网络,分别访问外网或者内网,ip是动态获取的.现在本机上装有vm ...

  5. .net(C#)访问Oracle数据库的几种免安装组件的对比

    Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...

  6. PHP访问MySql数据库介绍

    在网站后台,经常要与数据库打交道.本文介绍如何使用XAMPP来管理MySql数据库及如何用PHP来访问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...

  7. VS2010添加类失败问题,弹出错误框,提示 CodeModel操作失败,无法访问标记数据库

    我在使用VS2010添加类的时候,会弹出一个错误框,提示 CodeModel操作失败,可以无法访问标记数据库 英文版是 CodeModel operation failed,Possibly cann ...

  8. C#访问postgresql数据库

    最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...

  9. C/C++访问PostgreSQL数据库

    编号:1011时间:2016年5月17日09:46:01功能:Windows环境下C/C++访问PostgreSQL数据库https://segmentfault.com/a/119000000062 ...

随机推荐

  1. ArcGIS 10.1 如何连接数据库(转载)

    ArcGIS 10.1如何连接数据库 最近在使用ArcGIS 10.1的数据库,在使用的过程中发现了跟以往不太一样的地方,在这里将自己的心得和想法跟大家分享一下(使用Postgresql),根据使用过 ...

  2. Java学习笔记——关于位运算符的问题

    我就之直接贴图了!不想排版了! 有什么问题,欢迎大家指出,帮助我提高,谢谢!

  3. JDK/bin下工具列表说明

    JDK/bin下工具列表说明 appletviewer.exe:一种执行HTML文件上的Java小程序类的Java浏览器 apt.exe:注解处理工具(Annotation Processing To ...

  4. python 匿名函数&装饰器

    匿名函数 关键字lambda表示匿名函数,冒号前面的x表示函数参数匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. >>> list(map(l ...

  5. Task执行内幕与结果处理解密

    本课主题 Task执行内幕与结果处理解密 引言 这一章我们主要关心的是 Task 是怎样被计算的以及结果是怎么被处理的 了解 Task 是怎样被计算的以及结果是怎么被处理的 Task 执行原理流程图 ...

  6. 「C语言」原码反码补码与位运算

    尽管能查到各种文献,亲自归纳出自己的体系还是更能加深对该知识的理解.     本篇文章便是在结合百度百科有关原码.反码.补码和位运算的介绍并深度借鉴了张子秋和Liquor相关文章后整理而出.   目录 ...

  7. 管理kafka

    一.主题操作使用kafka-topics.sh工具可以执行主题的大部分操作(配置变更部分已被启用并被移动到kafka-configs.sh工具中).我们可以用它创建.修改.删除和查看集群里的主题,要使 ...

  8. Codeforces Round #433 (Div. 2)【A、B、C、D题】

    题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. #in ...

  9. django 外键操作

    下面定义两个模型,一个主表,一个字表. 举例说明: 如何通过主表对象找到对应的子表对象? 如何通过子表对象找到对应的主表对象? class Person(models.Model); name = m ...

  10. What Are Threads?

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/AboutThrea ...