Blogger Information
Blog 1
fans 0
comment 0
visits 695
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PDO连接SQLServer2008(linux和windows)
燕鹏的博客
Original
696 people have browsed it

我的php版本是5.6我不知道跟5.5差别有多大,但是网上大部分教程并不好用,受了好一番周折。

PDO连接sqlsrv2008在linux平台和windows平台都没有官方的实现:

windows:微软给PDO的驱动官方只有32位,没有64位版本,64位实现要自己去网上找,注意是否线程安全和编译版本(C++)这两个都要和PHP对应起来,否则也是不成功的http://blog.csdn.net/aw951753aw/article/details/44339889

linux:并无官方实现只能使用FreeTDS,http://www.2cto.com/database/201508/431610.html,其中phpize如果有问题请参照其他帖子,或者系统学习一下phpize,反正我是后者。

最后向THINKPHP致敬,TP完美解决了问题,但我没有时间去看如何实现的。

PHP代码如果想要用以上的方式兼容linux服务器和windows服务器,那么大概的示例代码是这样的。

实例

<?php
header("Content-type: text/html; charset=utf-8");

if(PATH_SEPARATOR==':')
    echo '本机操作系统是:Linux<br>';
else
    echo '本机操作系统是:Windows<br>';



  try {
      //服务器
      $host = "127.0.0.1";
      $port = '1433';
      $dbname = "databasename";
      $username = "sa";
      $pw = "xxxwtxxx";
      $dbh = null;
      if(PATH_SEPARATOR==':'){
          $dbh = new PDO ("dblib:host=$host:$port;dbname=$dbname","$username","$pw");
      }else{

          $dbh = new PDO("sqlsrv:Server=$host,$port;Database=$dbname",$username,$pw);
      }


  } catch (PDOException $e) {
      echo "Failed to get DB handle: " . $e->getMessage() . "\n";
      exit;
  }

  $stmt = $dbh->prepare("SELECT top 1 * FROM tablename");
  $stmt->execute();
  while ($row = $stmt->fetch()) {
      var_dump($row);
  }
  unset($dbh); unset($stmt);

运行实例 »

点击 "运行实例" 按钮查看在线实例

win下和linux下用了不同的驱动,那么连接字符串自然也就不一样,尤其要说明host和port之间一个是冒号一个是逗号,这点尤其要仔细。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post