凡是連接配接資料庫,必須安裝用戶端,我一般寫部落格都不寫原理,但是後來發現回頭看自己寫的自己都看不懂,是以這章部落格會多一點原理性的東西。
資料庫的連接配接一般都是在用戶端上完成的,MySQL也不例外,安裝mysql時一般都會這麼安裝:
<code>#yum install mysql mysql-server</code>
上面的mysql就是安裝的用戶端,mysql-server就是服務端,不安裝用戶端(mysql)就沒辦法執行mysql連接配接指令:mysql -u user -p pass -h -P port
而sqlserver同樣需要用戶端,下面講的就是在linux下安裝sqlserver 2008的用戶端freetds
安裝環境:
<code>#centos6.8</code>
<code>#php5.6</code>
<code>#sqlserver2008</code>
下載下傳freetds,一般都會在官網下載下傳,這個開源的想必沒人會用盜版。
<code>wget </code><code>ftp</code><code>:</code><code>//ftp</code><code>.freetds.org</code><code>/pub/freetds/stable/freetds-patched</code><code>.</code><code>tar</code><code>.gz</code>
<code>#linux下載下傳有點慢,可以在windows上下載下傳,然後再上傳至linux上。</code>
<code>tar</code> <code>zxf freetds-patched.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>freetds-1.00.27</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/freetds</code> <code>--with-tdsver=7.3 --</code><code>enable</code><code>-msdblib</code>
<code>make</code> <code>&& </code><code>make</code> <code>install</code>
2.導入ldconfig
<code> </code><code>echo</code> <code>"/usr/local/freetds/lib/"</code> <code>> </code><code>/etc/ld</code><code>.so.conf.d</code><code>/freetds</code><code>.conf</code>
<code> </code><code>ldconfig</code>
3.檢視安裝的版本:
<code>/usr/local/freetds/bin/tsql</code> <code>-C</code>
4.測試能否連接配接sqlserver:
<code>/usr/local/freetds/bin/tsql</code> <code>-H 10.10.10.10 -p 1433 -U sa -P password</code>
5.添加PHP擴充mssql和pdo_dblib,這是php兩種連接配接mssql的方式,隻安裝mssql也可以。
注意:一般安裝php會選擇兩種方式,一種是編譯安裝,一種是yum安裝。下面分别來講解兩種方式的安裝方式:
1)yum安裝的php
#很簡單,直接yun安裝mssql插件即可:
<code>yum </code><code>install</code> <code>php-pdo -y</code>
<code>yum </code><code>install</code> <code>php-mssql -y</code>
2)編譯安裝的php
<code>#進入到php的安裝包中,安裝mssql插件</code>
<code>cd</code> <code>/home/tools/php-5</code><code>.6.20</code><code>/ext/mssql/</code>
<code>/usr/local/php/bin/phpize</code>
<code>.</code><code>/configure</code> <code>--with-php-config=</code><code>/usr/local/php/bin/php-config</code> <code>--with-mssql=</code><code>/usr/local/freetds/</code>
<code>#安裝pdo_dblib</code>
<code>cd</code> <code>/home/tools/php-5</code><code>.6.20</code><code>/ext/pdo_dblib/</code>
<code>/usr/local/php/bin/phpize</code>
<code>.</code><code>/configure</code> <code>--with-php-config=</code><code>/usr/local/php/bin/php-config</code> <code>--with-pdo-dblib=</code><code>/usr/local/freetds/</code>
在php.ini中添加mssql和pdo_dblib:
<code>mv</code> <code>/usr/local/php/lib/php/extensions/no</code><code>*</code><code>/mssql</code> <code>/usr/local/php/lib/php/extensions/</code>
<code>mv</code> <code>/usr/local/php/lib/php/extensions/no</code><code>*</code><code>/pdo_dblib</code> <code>/usr/local/php/lib/php/extensions/</code>
<code>#把前面安裝的擴充插件生成的檔案移動到extension目錄下</code>
<code>vi</code> <code>/usr/local/php/lib/php</code><code>.ini</code>
<code>extension_dir = </code><code>"/usr/local/php/lib/php/extensions"</code>
<code>extension = </code><code>"mssql.so"</code>
<code>extension = </code><code>"pdo_dblib.so"</code>
3)重新開機php,看擴充插件有沒有生效:
#編譯一個php測試檔案:
<code>vi</code> <code>/www/html/test</code><code>.php</code>
<code><?php</code>
<code>phpinfo();</code>
<code>?></code>
用浏覽器打開上面的測試檔案,會看到如下資訊,代表成功安裝:
<a href="http://ip/test.php" target="_blank">http://ip/test.php</a>
<a href="https://s4.51cto.com/wyfs02/M01/95/E2/wKiom1kauemDpP72AAC6lkTfzxw811.jpg" target="_blank"></a>
6.測試mssql連接配接sqlserver2008:
#編輯一個測試檔案:
<code>vi</code> <code>/www/html/connect_sql</code><code>.php</code>
<code><?php </code>
<code>header(</code><code>"Content-type: text/html; charset=utf-8"</code><code>); </code>
<code>$msdb=mssql_connect(</code><code>"10.10.10.10:1433"</code><code>,</code><code>"sa"</code><code>,</code><code>"password"</code><code>); </code>
<code>if</code> <code>(!$msdb) { </code>
<code> </code><code>echo</code> <code>"connect sqlserver error"</code><code>; </code>
<code> </code><code>exit</code><code>; </code>
<code> </code><code>} </code>
<code>mssql_select_db(</code><code>"test"</code><code>,$msdb); </code>
<code>$result = mssql_query(</code><code>"SELECT top 5 * FROM student"</code><code>, $msdb); </code>
<code>while</code><code>($row = mssql_fetch_array($result)) { </code>
<code> </code><code>print_r($row); </code>
<code>} </code>
<code>mssql_free_result($result); </code>
#如果内容是sqlserver test資料庫,student表内的内容代表php成功連接配接到資料庫。
7.測試pdo_dblib連接配接sqlserver2008:
<code>#建立一個測試檔案</code>
<code>vi</code> <code>/www/html/connect_db</code><code>.php</code>
<code>header(</code><code>"Content-type: text/html; charset=utf-8"</code><code>); </code>
<code> </code><code>try { </code>
<code> </code><code>$</code><code>hostname</code> <code>= </code><code>"10.10.10.10"</code><code>; </code>
<code> </code><code>$port = 1433; </code>
<code> </code><code>$dbname = </code><code>"test"</code><code>; </code>
<code> </code><code>$username = </code><code>"sa"</code><code>; </code>
<code> </code><code>$pw = </code><code>"password"</code><code>; </code>
<code> </code><code>$dbh = new PDO (</code><code>"dblib:host=$hostname:$port;dbname=$dbname"</code><code>,</code><code>"$username"</code><code>,</code><code>"$pw"</code><code>); </code>
<code> </code><code>} catch (PDOException $e) { </code>
<code> </code><code>echo</code> <code>"Failed to get DB handle: "</code> <code>. $e->getMessage() . </code><code>"\n"</code><code>; </code>
<code> </code><code>} </code>
<code> </code>
<code> </code><code>$stmt = $dbh->prepare(</code><code>"SELECT top 5 * FROM student"</code><code>); </code>
<code> </code><code>$stmt->execute(); </code>
<code> </code><code>while</code> <code>($row = $stmt->fetch()) { </code>
<code> </code><code>print_r($row); </code>
<code> </code><code>unset</code><code>($dbh); </code><code>unset</code><code>($stmt); </code>
<code> </code>
本文轉自 王家東哥 51CTO部落格,原文連結:http://blog.51cto.com/xiaodongge/1926312