php連接mssql數據庫


有兩個方法:odbc 或者mssql 連接
配置的時候,最好先確認php網頁調試時,能輸出錯誤提示。
打開php.ini ,確認display_errors=On  。這樣,通過網頁打開測試頁面時,有錯誤提示,心裏有底,知道該怎麼調整代碼。


odbc 最大的好處就是不需要改什麼文件,拷貝其他文件之類的。 需要在系統dsn裏配置一個sql的odbc連接。 
首先打開odbc連接窗口進行設置。
點擊系統dsn,添加-sql server,通過創建到sql server的新數據源窗口設置連接的配置。這裏需要注意的是,
第一步設置的名稱,後面代碼需要用到.
配置完成後,用測試頁面進行測試。新建一個php頁面,代碼如下:
<?php
$ms_host = "phptosql05"; //這裏是ODBC的連接名稱
$ms_user = "sa"; //用戶名
$ms_pass = "123456"; //密碼
$ms_connect =odbc_connect($ms_host, $ms_user, $ms_pass) or die("Couldn't connect to SQL Server on MSSQL");
       if($ms_connect)
       {
       echo '恭喜,連接數據庫成功!';
       };
?>
如果看到恭喜,連接數據庫成功!,則已經連接上sql數據庫了。


注:php默認打開odbc的。你可以通過phpinfo頁面查看是否開啓了這個功能。
<?php
 phpinfo(); 
?>


mssql 需要做一些設置
首先。打開php.ini ,保證mssql.secure_connection=Off  . 把extension=php_mssql.dll前的;去掉。
然後,打開下載ntwdblib.zip,把ntwdblib.dll文件php\php5文件目錄(即php.ini的目錄裏)
接着,到php\php5\ext文件目錄裏,把php_mssql.dll和ntwdblib.dll拷貝到windows/system32裏。
最後,重啓apache。
注:你可以通過phpinfo頁面查看是否開啓了mssql這個功能。
<?php
 phpinfo(); 
?>


配置完成後,用測試頁面進行測試。新建一個php頁面,代碼如下:
  <?php
    $conn=mssql_connect("192.168.0.101","sa","123456") or die('Something went wrong while connecting to MSSQL');


       //測試連接
       if($conn)
       {
       echo '連接數據庫成功!';
       }
  ?>
如果看到連接數據庫成功!,則已經連接上sql數據庫了。


對於 2005 或者 2008 ,經過測試,使用mssql也能連接,但是。也可以到微軟官網,下載php的驅動,然後使用sqlsrv功能,但是,這裏需要注意的是,使用sqlsrv需要看php版本和操作系統,這裏不再介紹。附一個測試連接,並輸出查詢結果的的php頁面代碼。


<?php
$server = '192.168.0.101';
// Connect to MSSQL
$conn = mssql_connect($server, 'sa', '123456') or die('Something went wrong while connecting to MSSQL');
if (!$conn) {
    die('Something went wrong while connecting to MSSQL');
}
else {echo '連接數據庫成功';};
mssql_select_db('master');
$query="select top 6 * from spt_values";
$result=mssql_query($query);
$numrow=mssql_num_rows($result);
for($i=0;$i<$numrow;$i++)
{
  $row=mssql_fetch_array($result);
  echo("<br />"); 
  echo($row[1]);
  echo("<br />"); 
}
mssql_free_result($result);
mssql_close($conn);

?>


----------從mssql 2008 取出的數據中文亂碼問題。


亂碼原因
只要你使用的是php自帶的那個mssql,那讀出來的數據編碼格式一定是gbk,這是因爲mssql自身只有gbk的編碼,且不能定義

解決方案
1使用mssql
可以在輸出的時候,對輸出的數據強制轉換,只需要轉換漢字,數字不需要轉
while($row = mssql_fetch_row($result)){
    echo iconv('GB2312','UTF-8',$row[0]);
}

2使用最新的微軟擴展sqlsrv driver for php
下載這個dll,放到php的ext文件夾中
修改php.ini打開這個擴展
在定義連接時,可以指定編碼爲utf-8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章