PHP連接sqlserver的兩種方法,向sqlserver2000中寫入數據,中文亂碼


項目環境是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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM