PHPとPDOを介してMS SQL 2008 R2に接続する必要があるWebアプリケーションに取り組んでいます。ドライバーを正常にインストールし、次の方法でも確認しました。
var_dump(PDO::getAvailableDrivers());
私は 2 つの Windows サーバー (どちらも 2008) を使用しています。1 つは SQL データベース用で、もう 1 つは XAMPP 用です。他のサーバーから SQL サーバーに接続しているプログラムが約 8 つあるため、接続の問題は SQL サーバー自体ではないと思います。
ここでは、アプリケーションから MS SQL データベース テーブルに挿入する非常に簡単な例を示します。
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$company = $_POST['company'];
$name = $_POST['name'];
$firstname = $_POST['firstname'];
$number = $_POST['number'];
$host = $_POST['host'];
$licenseplate = $_POST['plate'];
$reason = $_POST['site'];
$timein = date('Y-m-d H:i:s');
$db = new PDO("sqlsrv:Server=MSSQLSERVER2,1433;Database=visitormod", "**************", "******************"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO visitors (visitor_name, visitor_firstname, visitor_company, visitor_number, visitor_plate, visitor_in) VALUES (:lname, :fname, :company, :pnumber, :lplate, :tin)";
$q = $db->prepare($sql);
$q->execute(array(':lname'=>$name, ':fname'=>$firstname, ':company'=>$company, ':pnumber'=>$number, ':lplate'=>$licenseplate, ':tin'=>$timein));
ここにいくつかの追加情報があります:
SQL サーバーのホスト名 (コンピューター名自体) =SQLSERVER
SQL サーバーの名前 (SQL Server Management Studio の下 = 接続先) =MSSQLSERVER2
ここに私の質問があります:
データベースに正常に接続できません。これに関連していると思います
$db = new PDO("sqlsrv:Server=MSSQLSERVER2,1433;Database=visitormod", "**************", "******************");
ここで使用しますServer=MSSQLSERVER2
が、それは SQL サーバー管理スタジオのサーバーの名前にすぎません。サーバー自体を指している場所がないのは、おそらくそれが私の問題であり、ODBC 接続が必要ですか? Linux環境で必要なだけのインターネットを読みましたか?
誰かが私が間違っていることを教えてくれますか? 追加の接続を行う必要がありますか?
最後の質問は、接続する必要があるポート番号はどこで確認できますか?
すなわち
new PDO("sqlsrv:Server=MSSQLSERVER2,1433;
これは、私のページに表示されるエラーです。
致命的なエラー: 例外 'PDOException' がキャッチされず、メッセージ 'SQLSTATE[IMSSP]: この拡張機能を使用するには、Microsoft SQL Server 2012 Native Client ODBC ドライバーが SQL Server と通信する必要があります。次の URL にアクセスして、x86 用の Microsoft SQL Server 2012 Native Client ODBC ドライバーをダウンロードします。