发新话题
打印

来篇原创:在linux上配置 PHP+PDO-MSSQL 心得

来篇原创:在linux上配置 PHP+PDO-MSSQL 心得

WIN下用PHP读写MSSQL很简单,装上MSSQL客户端,再编辑PHP.INI开个扩展extension=php_mssql.dll ,就OK了. PDO的支持也是如此: extension=php_pdo_mssql.dll

可是linux下就不是那么简单的事情.
有过linux下读写MSSQL数据库经验的朋友,对于freetds这个东西肯定不陌生. 配置相对也不复杂:

先到 http://www.freetds.org/ 下载 源码包
复制内容到剪贴板
代码:
$ cd /tmp
$ wget  [url]ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz[/url]
解压并安装
复制内容到剪贴板
代码:
$ tar zxvf freetds-stable.tgz
$ ./configure --prefix=/usr/local/freetds
$ make
$ su root
Password:
$ make install
然后编译PHP
复制内容到剪贴板
代码:
$cd ../php-5.2.5
$./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
.... 其它参数 \
--with-mssql=/usr/local/freetds
(也可以用 --with-sybase=/usr/local/freetds)

make 并 make install
复制内容到剪贴板
代码:
$ make
$ su root
Password:
# make install
配置freetds
复制内容到剪贴板
代码:
# vim /usr/local/freetds/etc/freetds.conf
找到类似的行
复制内容到剪贴板
代码:
# A typical Microsoft SQL Server 7.0 configuration      
;[MyServer70]
;        host = 192.168.0.1
;        port = 1433
;        tds version = 7.0
把他们前面的冒号删除,把host改为你的MSSQL服务器主机名或IP地址.port改为自己的端口号,
tds version是SQLserver的版本,2000的是7.0 要是其它的版本,自己查查.

注意:[MyServer70] 非常重要. 将会在PHP代码中代替 mssql_connect("host","sa",""); 中的 host
关于freetds的其它如 ODBC/tsql/ 配置,请参考 http://www.freetds.org/userguide/
好了,完成后重启WEB服务. PHPINFO里看看,应该有如图的信息:


再用如下代码测试:
copycode
PHPCODE:
<?php

$conn 
mssql_connect("MyServer70""sa""password");

mssql_select_db('dbname',$conn); 

$msquery "select firstname,lastname from table";

$msresultsmssql_query($msquery);

while (
$row mssql_fetch_array($msresults)) {

       echo 

"<li>" 

$row['titleofcourtesy'] . " " $row['firstname'] . " " $row['lastname'] .  "</li>\n";

}

?>
库和表存在并有数据.应该会返回正确的数据了.
如果有问题,查查配置文件是否正常,MSSQL服务器有没有开远程连接,防火墙等等.


到这里,MSSQL是可以用了.但感觉很不爽,PDO应该是PHP以后的标准.所以现在来搞定PDO-MSSQL:

因为有pdo-mysql配置经验,开始时我想当然的在编译PHP5时直接加参数--with-pdo-mssql=/usr/local/freetds
结果./configure时系统返回一个错误.

通过查看./configure --help 才知道,需要通过dblib来做.
复制内容到剪贴板
代码:
$cd ../php-5.2.5
$./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
.... 其它参数 \
--enable-pdo \
--with-pdo-sqlite
--with-pdo-mysql=/usr/local/mysql/bin/mysql_config \
--with-mssql=/usr/local/freetds
--with-pdo-dblib=//usr/local/freetds
$ make
$ su root
Password:
# make install
重启apache 刷新phpinfo页面.多了这一项表示成功:


老习惯,代码验证:
copycode
PHPCODE:
<?php



try {



   
$hostname '192.168.0.1'//注意,这里和上面不同,要直接用IP地址或主机名

   
$port 1433//端口

   
$dbname "dbname"//库名

   
$username "sa"//用户

   
$pw "password"//密码

   
$dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");

  } catch (
PDOException $e) {

   echo 
"Failed to get DB handle: " $e->getMessage() . "\n";

   exit;

  }



echo 
'connent MSSQL succeed';



$stmt $dbh->prepare("select firstname,lastname from table");

  
$stmt->execute();

  while (
$row $stmt->fetch()) {

   
print_r($row);

  }

  unset(
$dbh); unset($stmt);



?>
输出正常..搞定!
赶时髦,隔三差五写博客. ;) http://www.esayr.com

TOP

回复: 来篇原创:在linux上配置 PHP+PDO-MSSQL 心得

MSSQL新手,有错误之处请各大侠指正.
赶时髦,隔三差五写博客. ;) http://www.esayr.com

TOP

翻身了!三星手机首次采用中国产芯片

三星电子二十七日宣布选定中国展讯通信有限公司作为三星的手机芯片供货商,这是国际主流手机厂商首次采用中国产芯片,也意味着中国手机行业向产业链上端提升了一步。

    展讯通信总裁兼首席执行官李力游表示,供货的两款产品GSM/GPRS和EDGE射频收发器已经具有国际竞争力,向三星供货后,将实现产能的平稳增长。展讯二00七年在纳斯达克上市,是中国第一支在纳斯达克上市的3G概念股票。

    业内人士指出,展讯成功进入三星的采购名单,是中国本土厂商的一个历史性突破。这一方面是价格优势,另一方面,展讯二00八年以七千万美元的价格收购射频收发器设计公司Quorum,建立起来的基带、射频一体化的解决方案,提升了产品竞争力。

    据了解,国际五大主流手机厂商中,诺基亚从德州仪器、意法半导体定制芯片,摩托罗拉主要定制飞思卡尔半导体芯片,三星大部分采用高通的芯片,索爱和LG的WCDMA手机采用爱立信移动平台EMP芯片。  


    随着金融危机对手机制造行业的冲击,手机厂商寻求降低成本和为手机增加新的功能,引发芯片供应商的洗牌,如诺基亚增加了与英飞凌的合作,摩托罗拉则扩大了与德州仪器的供应协议。国际手机芯片厂商的洗牌给中国芯片商提供了机会。

转自:http://junshi365.blog.china.com

TOP

好贴,顶一下楼主!

好贴,顶一下楼主!
















古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。---魔兽剑圣异界纵横
小游戏 极品家丁 龙蛇演义 恶魔法则 飞升之后 异界枪神 凡人修仙传 魔兽领主 超级农民 极品公子

TOP

发新话题