设为首页 收藏本站
查看: 1206|回复: 0

[经验分享] PDO连接SQLServer2008(linux和windows)

[复制链接]

尚未签到

发表于 2017-12-8 06:35:35 | 显示全部楼层 |阅读模式
  首先觉得这个PDO坑!!!很坑!!!
  我的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.iyunv.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);
  首先跑个题,以前真不知道PHP代码还能这样拼字符串,直接用双引号括起来,变量可以直接放进去。
  然后说重点,win下和linux下用了不同的驱动,那么连接字符串自然也就不一样,尤其要说明host和port之间一个是冒号一个是逗号,这点尤其要仔细。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421981-1-1.html 上篇帖子: ASP.NET连接数据库时,提示“用户 'sa' 登录失败原因: 未与信任 SQL Server 连接相关联 下篇帖子: Windows ROUTE命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表