簡體   English   中英

Linux上的PHP 5.4:如何連接MS SQL Server 2008?

[英]PHP 5.4 on Linux: How to connect with MS SQL Server 2008?

我有一台Linux服務器Debian 6,安裝了Apache 2.2和PHP 5.4。 我需要將我的應用程序與MS SQL Server 2008連接。

我的應用程序使用Zend Framework 1.11和charset UTF-8(我將擁有來自世界各地的用戶,他們將使用他們自己的語言放置數據)。

FRIST,我嘗試使用適用於Linux的Microsoft SQL Server ODBC驅動程序。 它說只適用於Red Hat,但我按照這些說明安裝:

http://www.codesynthesis.com/~boris/blog/2011/12/02/microsoft-sql-server-odbc-driver-linux/

我可以連接並對其進行一些選擇,但我無法在其上插入數據。 我在pdo語句上綁定參數時遇到了問題。

插入如下的數據不起作用:

$stmt = $conn->prepare("insert into mar_regions (name) values (:name)");
$resp = $stmt->execute(array(':name' => $param));

但如果我像這樣使用它,它的工作原理:

$stmt = $conn->prepare("insert into mar_regions (name) values ('".$param."')");
$resp = $stmt->execute();

所以我放棄了這個驅動程序,因為如果這樣我的應用程序沒有ZF 1.11將無法工作。

第二,我嘗試使用PDO Driver for FreeTDS。 這個工作正常,我可以在我的ZF 1.11應用程序上使用。

但后來,我又遇到了一個問題:charsets。 我配置我的freeTDS.conf使用UTF-8,更改我的表以使用VARCHAR的NVARCHAR,並可以插入utf-8數據,如下所示:

$stmt = $dbh->prepare("insert into mar_teste (name) values (N'ンから初・配信 € зеленый банан ÀÀÀÀáááááá')");
$resp = $stmt->execute();

但是,在我的ZF 1.11上,我無法在查詢中傳遞這個'N'屬性! 所以我的申請仍然沒有奏效。

如你所見,我嘗試了一切。

所以我的問題是 :如何在MS SQL Server 2008上使用ZF 1.11 charset UTF-8從linux連接?

我的問題的答案是:使用freeTDS! 有一個關於charset的參數:

[MyDSN]
    host = <<ip>>
    port = <<port>>
    # use 8.0 for newer versions of SQLSERVER
        tds version = 8.0
        # text size don't need to be such a high value, its just an example
        text size = 4294967295
        client charset = UTF-8

在Zend Framework上,像這樣配置連接:

;; BANCO DE DADOS LINUX
database.adapter                = PDO_MSSQL
database.params.pdoType         = dblib

database.params.host            = MyDSN
database.params.dbname          = <<dbname>>
database.params.username        = <<username>>
database.params.password        = <<passwd>>
database.params.driver_options.charset = UTF-8

database.isDefaultTableAdapter  = true

它解決了這個問題! ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM