仕事中にすでに確立されているデータベースに接続しようとしています。私たちはバックエンドにアクセスすることはできませんが、サーバーアドレスとそれに接続するためのログイン情報があります。昨年はPDOとdblibを使用して接続できましたが、dblibはPHP 7ではサポートされていません。私は、SQL Serverのドライバを使用しようとしています。SQL Serverがエラーに接続していないか、エラーを表示していません
私はそれをテストするための基本的な接続文字列を設定し、指定した任意のエラーを取得していないです、また私はどんな結果になっています:
<?php
//Display All Errors
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
echo "Test1";
//Try the Connection
try {
//Connection Variables
$server = "11.123.123.123, 1234";
$database = 'myDatabase';
$username = "myUsername";
$password = "myPassword";
//Connection String
$conn = new PDO ("sqlsrv:Server=$server;Database=$database","$username","$password");
//Initiating Error Detection
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
//Catch exceptions to the Try
catch(Exception $e) {
echo "Test3";
die(print_r($e->getMessage()));
}
//Prepare SQL Statement
$stmt = $conn->prepare("SELECT * FROM WorksheetPriceChangeData");
//Execute SQL Statement
$stmt->execute();
while ($row = $stmt->fetch()) {
print_r($row);
}
echo "Test4";
?>
(機密情報に使用プレースホルダを)。このコードの結果、上部に「Test1」エコーを表示する空のページが表示されます。私のPHOログにはエラーはありません。phpinfo()は、sqlsrv PDOとsqlsrv拡張(4.0.8629.3)がアクティブであることを示し、11.123.123.123のような偽のサーバアドレスを使用すると同じことをします。
また、私はWindows Server 2012 R2上にあり、データベースはデータソース管理者に表示されることを追加します。 「ネットワークログインIDを使用してWindows NT認証を使用する」チェックボックスをオンにし、「追加の構成オプションのデフォルト設定を取得するためにSQL Serverに接続する」チェックボックスをオンにして正常に接続します。
私はどのような方向性や考えを提供していただきありがとうと思います。エラーメッセージやログがなくても処理を進めることは困難です。
種類よろしく、 ベン・デビッド
PDOと古いsqlsrvメソッドを混在させているようです。 PDOを使う場合、 'sqlsrv_prepare()'はPDOオブジェクトのメソッドではないので、 '$ dbh-> prepare()'と '$ stmt-> execute()'を呼び出す必要があります。スクリプトでエラー報告を有効にすると、PHPに致命的なエラーが表示されるはずです。あなたの最初のPDO接続は成功するかもしれませんが、メソッド呼び出しの誤りのために後続のコードが爆発します。あなたのスクリプトの一番上にある: 'error_reporting(E_ALL); ini_set( 'display_errors'、1); 'これらのメソッドを正しく取得することは、ここで行う必要があります。 –
PDOの準備コールは、使用するRDBMSドライバに関係なく、[docsのように]見えるはずです(http://php.net/manual/fr/pdo.prepare.php)。メソッドと古いドライバ固有のAPIを混在させることはできません。 –
こんにちはマイケル、助けてくれてありがとう - これは難しかったです。 PDOメソッドを反映するようにステートメントを変更しました(また、$ dbhの代わりに$ connを使用しましたが、これは元の誤ったものです)。私はエラーをオンにし、永続的な "invalid handle returned"を取得しています。私はdblibを使用したときと同じ資格情報を使用していますが、sqlsrvは接続していません。 – user4333011