項目環境是php5.3.28 項目用的ThinkPHP3.2.3 已經mysql5.5數據庫,要和另一個項目對接,需要連接sqlsever2000數據庫進行一些操作。
第一種用php自帶擴展連接數據庫:
1、首先要下載
php_pdo_sqlsrv_53_ts_vc9.dll
php_sqlsrv_53_ts_vc9.dll
下載地址:http://share.weiyun.com/dc589fc41567ce6e3fb8b131ec1553ff
這兩個文件
2、復制到PHP目錄下的ext目錄下
3、修改PHP目錄下的php.ini文件:
在文件最后加上
extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
4、然后查找
mssql.secure_connection
把值改為on
保存php.ini文件
5、重啟apache
php里面的連接數據代碼
$model = new Model();
$conn=$model->db(1,"sqlsrv://登錄名稱:密碼@服務器host:1433/數據庫名稱");
$sql='select id,code from t_user';
$res=$conn->query($sql);
參考網址(轉):http://www.cnblogs.com/phpyangbo/p/thinkphp-sqlserver-lianjie.html
我用這種方法遇到問題了,在我本地環境上面可以正常使用sqlserver數據庫,
到了服務器上面能連接上數據庫,可是執行不了sql,折騰了兩天沒找到什么問題然后就用第二種方法連接了
第二種 用ODBC連接sqlserver數據庫
1.配置SQL Server ODBC數據源
我的系統是64位的,就得配64位的數據源
(1)運行C:\Windows\SysWOW64\odbcad32.exe
(2)在【ODBC數據源管理器】對話框中,單擊【系統DNS】標簽,單擊【添加】按鈕,彈出【創建新數據源】對話框
(3)在【創建新數據源】對話框中,在驅動程序序列表中選擇【SQL Server】,單擊【完成】按鈕,彈出【創建到SQL Server的新數據源】對話框
(4)在【創建到SQL Server的新數據源】對話框中,在【名稱(M)】文本框中輸入數據源名稱:(可自己自由命名,讀取性好就行)php連接的時候會用到,
在【服務器(S)】文本框中選擇服務器名為:要是連接本地的寫local,連接遠程的寫遠程服務器的ip,單擊【下一步】按鈕,進入【創建到SQL Server的新數據源】對話框
(5) 在【創建到SQL Server的新數據源】對話框中,選擇【使用用戶輸入登陸ID和密碼的SQL Server驗證(s)】單選按鈕,在【登陸ID(l)】文本框內輸入SQL Server身份驗證的登錄名:sa,
在【密碼】文本框內輸入設定的密碼,單機【下一步】按鈕,彈出【創建到SQL Server的新數據源】對話框
(6)在【創建到SQL Server的新數據源】對話框中,勾選【更改默認的數據庫為】復選框,將默認的數據庫選擇為自己要連接的數據庫,單擊【下一步】按鈕,彈出【創建到SQL Server的新數據源】對話框
(7)在【創建到SQL Server的新數據源】對話框中,采用默認設置。單擊【完成】按鈕,彈出【ODBC Microsoft SQL Server安裝】對話框
(8)在【ODBC Microsoft SQL Server安裝】對話框中,單擊【測試數據源】按鈕。連接成功會顯示的,然后點確定就行了,數據源就配好了。
2.php用數據源連接sqlserver數據庫
(1)在 php.ini 中將 extension=php_pdo_odbc.dll 前的分號去掉,並重啟 apache.
(2)php腳本連接代碼
$servername="數據源的名稱";
$conn=odbc_connect($servername,'數據庫登錄名稱','登錄密碼',SQL_CUR_USE_ODBC);
$sql="SELECT * FROM user";
$result=odbc_exec($conn,$sql);
可參考(轉):http://blog.sina.com.cn/s/blog_a07a3f180101dg4g.html
以前做項目沒有連接過sqlserver數據庫,第一次連接,折騰了三天才連接上,總結下經驗,以后在鏈接的是不用到處找了
補充:
PHP向sqlserver2000中寫入數據,中文亂碼
首先:查看SQLserver編碼格式的SQL語句為:
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
查詢結果的含義:
936 簡體中文GBK
950 繁體中文BIG5
437 美國/加拿大英語
932 日文
949 韓文
866 俄文
65001 unicode UFT-8
PHP使用UTF-8編碼。SQL Server 2008使用默認的GBK編碼。這樣,向數據庫寫入中文是會出現亂碼的。
解決辦法:
在執行查詢語句之前將查詢語句及所要插入的數據轉化為GBK編碼。
$query = "INSERT INTO employees (employeeID, employeeName) VALUES ('$employeeID', '$employeeName')";
$query = iconv("utf-8", "gbk", $query);
