LinuxサーバーDebian6があり、Apache2.2とPHP5.4がインストールされています。アプリケーションをMSSQLServer2008に接続する必要があります。
私のアプリケーションはZendFramework1.11と文字セットUTF-8を使用しています(世界中のあらゆる場所からユーザーがいて、データを自分の言語で配置します)。
FRIST、Linux用のMicrosoft SQLServerODBCドライバーを使用しようとしました。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();
この場合、私のアプリケーションno ZF 1.11は機能しないため、このドライバーをあきらめました。
次に、FreeTDSにPDOドライバーを使用しようとしています。これは問題なく動作し、ZF1.11アプリケーションで使用できます。
しかし、その後、もう1つ問題が発生しました。それは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 Server2008でZF1.11文字セットUTF-8を使用してLinuxから接続する方法は?