之前,在PHP程式員雷雪松的部落格中已經詳細的介紹了Linux下MsSQL擴充的安裝。本以為這個解決了以後,使用國內優秀的PHP架構ThinkPHP就會應該比較順利的。但是在串連MsSQL資料庫的時候還是遇到了一些問題,網上解決的方案並不多。下面PHP程式員雷雪松就把ThinkPHP項目中連結MsSQL資料庫報錯和解決辦法總結出來分享給需要的朋友。
1、報錯”Undefined class constant ‘PDO::SQLSRV_ATTR_ENCODING”
具體的解決辦法為:將ThinkPHP\Library\Think\Db\Driver\Sqlsrv.class.php中第26行’PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8,’注釋掉即可。
2、報錯”SQLSTATE[IMSSP]: An unsupported attribute was designated on the PDO object”
具體的解決辦法為:將ThinkPHP\Library\Think\Db\Driver.class.php中第101行’$this->options[PDO::ATTR_EMULATE_PREPARES] = false’注釋掉即可。
3、如果原表名大寫則會報錯找不到表名
具體的解決辦法為:不管MsSQL資料庫表名是否小寫,在ThinkPHP項目中所有表名小寫。
下面附上ThinkPHP3.2中操作MsSQL的設定檔conf.php:
returnarray(
//'配置項'=>'配置值'
'DB_TYPE'=>'sqlsrv',// 資料庫類型
'DB_USER'=>'',// 使用者名稱
'DB_PWD'=>'',// 密碼
'DB_PORT'=>'',// 連接埠
'DB_PREFIX'=>'',// 資料庫表首碼
'DB_DSN'=>'dblib:host=IP地址:連接埠;dbname=資料庫名稱',
'DB_CHARSET'=>'utf8',// 字元集
);
在這個項目中,因為第一次使用ThinkPHP架構操作MsSQL資料庫一路不太順利。但還是學到了很多知識,也總結了一些道理。第一,實踐出真知,只有你嘗試了才知道對不對,這個對於PHP程式員太重要了,不同的環境,不同的系統都有可能出錯。第二,面對新的問題,一定要有耐心,有信心,有決心。把原理的東西搞清楚,把問題化解為自己會的一些知識點。第三,一定要認清自己,沒有誰什麼都會。不管你做PHP程式員有多長時間,總會遇到問題。一定要多和別人交流,多去藉助外面的力量,多去查閱網上資料。最後,感謝ThinkPHP開發人員,感謝為開源事業做貢獻的前輩們!
標籤:PHP編程
來源:Thinkphp操作MsSQL心得