4

PHP の PDO を使用して Microsoft SQL Server / Microsoft Azure データベースに接続しようとしています。

<?php

// no actual login data, but similar string lengths
$dbHost = 'aa1234bbb5.database.windows.net';
$dbUser = 'db_a1a1a1a1_b2b2_c3c3_d4d4_e5e5e5e5e5e5_ExternalWriter';
$dbPass = 'pPAs0wOoO1&r#dd';
$dbName = 'db_a1a1a1a1_b2b2_c3c3_d4d4_e5e5e5e5e5e5';

try {
    $pdo = new PDO("dblib:host=$dbHost:1433;dbname=$dbName", $dbUser, $dbPass); 
} catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
}

PDO の初期化により、次のメッセージとともに PDOException がスローされます。

SQLSTATE[HY000] Name too long for LOGINREC field (severity 2)

Debian 7.7 x64 で PHP 5.4.41-0+deb7u1 を実行しています。

私の質問は次のとおりです。

  1. このエラー メッセージが表示されるのはなぜですか?
  2. 実際にデータベースに接続するにはどうすればよいですか?

注: Microsoft Access Web App のバックエンド データベースにアクセスする必要があるため、ログイン データを変更できません。このような Web アプリを作成すると、Microsoft は、"公開されている" Azure サーバーの 1 つにデータベースを作成します。サーバーにユーザー名とパスワードを提供するように依頼できますが、残念ながら、提供されたものを使用する必要があります。

4

2 に答える 2

2

「LOGINREC」構造は最大 30 文字です。長い文字列を短くする必要があります。

于 2015-06-23T14:05:28.020 に答える
-1

Microsoft の MS SQL の代替ドライバーである SqlSrv を試しましたか。私の理解では、PDO_DBLIB - 拡張子: http://php.net/manual/en/ref.pdo-dblib.phpは、PHP 5.3 以降の Windows では使用できなくなりました。SqlSrv を使用することをお勧めします。長い dbUser と dbPass をテストしました。SqlSrv を使用すると、私の側では問題なく動作します。 ここに画像の説明を入力

あなたの問題について誤解がある場合は、お気軽にお知らせください。

編集:

私も自分の側で odbc_connect を試しましたが、正常に動作します ここに画像の説明を入力

Linux 用 Microsoft SQL Server ODBC ドライバーの詳細については、http://www.codesynthesis.com/~boris/blog/2011/12/02/microsoft-sql-server-odbc-driver-linux/ &を参照してください。 http://www.easysoft.com/developer/languages/php/sql_server_unix_tutorial.html#driverであり、64 ビットの Debian または Ubuntu にインストールするのはそれほど難しくありません。

于 2015-06-23T18:45:18.420 に答える