天天看點

linux編譯安裝mssql用戶端和配置php連接配接mssql

凡是連接配接資料庫,必須安裝用戶端,我一般寫部落格都不寫原理,但是後來發現回頭看自己寫的自己都看不懂,是以這章部落格會多一點原理性的東西。

資料庫的連接配接一般都是在用戶端上完成的,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>&amp;&amp; </code><code>make</code> <code>install</code>

2.導入ldconfig

<code> </code><code>echo</code> <code>"/usr/local/freetds/lib/"</code> <code>&gt; </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>&lt;?php</code>

<code>phpinfo();</code>

<code>?&gt;</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>&lt;?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-&gt;getMessage() . </code><code>"\n"</code><code>;  </code>

<code>  </code><code>}  </code>

<code>   </code> 

<code>  </code><code>$stmt = $dbh-&gt;prepare(</code><code>"SELECT top 5 * FROM student"</code><code>);  </code>

<code>  </code><code>$stmt-&gt;execute();  </code>

<code>  </code><code>while</code> <code>($row = $stmt-&gt;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