PHP 5.4的Linux:如何使用MS SQL Server 2008的连接?(PHP 5.4 o

2019-06-25 00:28发布

我有一个Linux服务器的Debian 6,使用Apache 2.2和PHP 5.4安装。 我需要我的应用程序与MS SQL Server 2008的连接。

我的应用程序使用Zend Framework 1.11和字符集UTF-8(我会在世界上所有地方的用户,他们将数据放在自己的语言)。

FRIST,我试图使用Microsoft SQL Server ODBC驱动程序的Linux版本。 它说的是仅适用于红帽,但我按照这些说明进行安装:

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驱动程序freetds的。 这一个好的工作,我可以在我的ZF 1.11应用程序中使用。

但后来,我得到了更多的一个问题:字符集。 配置我freeTDS.conf使用UTF-8,改变我的表使用NVARCHAR insted的VARCHAR,并可以插入UTF-8的数据是这样的:

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

但是,在我的ZF 1.11,我不能接受这“N”上querys属性! 所以,我的申请仍然没有奏效。

正如你可以看到我都试过了。

所以我的问题是 :如何从Linux连接,采用ZF 1.11字符集UTF-8,MS SQL Server 2008上?

Answer 1:

我的问题的答案是:使用freetds的! 即使世界上它的字符集参数:

[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框架,配置连接是这样的:

;; 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

它解决了这个问题! ;)



文章来源: PHP 5.4 on Linux: How to connect with MS SQL Server 2008?