日期:2016-1-14(原创文章,禁止转载)
2008-05-26 20:37
来源:互联
編輯:遠行客【糾錯】人評論
A-A+
怎么開淘寶店 站優化方法 創業如何獲得投資
小米note頂配版評測
最新LOL活动
年初的時候一直在做一個站MSSQL2000-MySQL5的遷移工作,因為采用了不同的程序系統,所以主要問題在數據的遷移。由于2個系統數據庫結構差異非常大,不方便采取SQLSERVER里導入MYSQL的ODBC數據源的功能(也不推薦這么做,字段類型等不同點會搞死人的~),因此就在WINDOWS下自己寫PHP腳本從SQLSERVER里讀數據,然后按照新系統的需要處理之后插入MYSQL里面,靈活也比較方便。實際過程主要有下面幾個問題:
1、數據庫的連接,主要是連接SQLSERVER。主要有3種方法:
1.1利用PHP中的mssql_系列函数,这个与使用mysql_系列函数类似,不过要打开i中相关扩展(extension=php_l)。
1.2利用ODBC连接,由于抽象了具体数据库,所以没有办法利用数据表字段名=数组键名的特性,在针对具体应用时不是很方便,代码形式:
$conn=odbc_connect(datasourceusernamepassword);$sql=select*fromnews;$cur=odbc_exec($conn$sql);while(odbc_fetch_row($cur)){$field1=odbc_result($cur1);$field2=odbc_result($cur2);//dosomething}
1.3使用PDO-PHP5中加入数据对象抽象层,作为官方推出的数据访问接口,优点有很多,比如支持参数绑定以防止SQL注入;对于不同数据库加载不同驱动即可,程序代码是一致的,便于移植等等,相信应该是大势所趋。不过由于用了PHP5全新的面向对象特性,需要PHP5的支持,5.1可以直接使用,5需要装PECL,另外还要修改i,增加:extension=php_pdo_l和extension=php_pdo_l,实际代码如下:
try{$DBH=newPDO(mssql:dbname=XXX;host=localhost rootpassword);//ConnecttoDB}catch(PDOException$e){printError!:.$e-getMessage();//ErrorMessagedie();}$stmt=$DBH-prepare(SELECT*FROMnews);//StmtHandle$stmtif($stmt-execute()){while($row=$stmt-fetch()){//dosomething}}$stmt2=$mssql-prepare(INSERTINTOnews (titleauthor)VALUES(:title:author));$stmt2-bindParam(':title'$title);$stmt2-bindParam(':author'$author);$stmt2-execute();$DBH=null;//CloseConnection这里要提醒下的是MSSQL里面是没有MYSQL中LIMIT这个语法的。
1
2
下一页
查看全文