WindowsマシンにPHPWebサイトがあり、別のマシンのIISサーバーにあるSQLデータベースにデータを直接挿入したいですか?
どのアプローチに従うべきですか?
**私の最初の考えは、IISによってホストされているPHPページに転送して、クエリを実行してから、自分のWebサイトにリダイレクトすることでした。しかし、私はもっと簡単で複雑でないアプローチを好みます。
IISはWindowsServer2008R2上にあります。
どうぞよろしくお願いいたします。ありがとう!
PHPを使用している場合は、PDOを使用して別のマシン上のデータベースへの接続を開くことができます。
$remotedb = new PDO("*dbtype*:dbname=*dbname*;host=*addressOfOtherMachine*", $user, $password);
PHPでSQLSRVを使用して、2008R2を搭載したIIS6マシン上のデータベースに接続します。 リモートマシンはリモート接続を許可する必要があり、許可されていない場合は設定を通じてオンにする必要があると思います。接続文字列は次のようになります。
<?php
/* NEW CONNECTION FOR SQLSRV DRIVER (for MSSQL access) */
$uid = "username";
$pwd = "password";
$DB = "database_name";
$serverName = "ip_address_of_remote_server (example: 192.168.0.25)";
$connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database"=> $DB, "ReturnDatesAsStrings" => true);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
?>
接続を使用したパラメータ化された挿入クエリの例を次に示します。
<?php
$p1 = "values passed from a form";
$p2 = "values passed from a form";
$p3 = "values passed from a form";
$params = array(
array(&$p1, null, null, SQLSRV_SQLTYPE_VARCHAR(50)),
array(&$p2, null, null, SQLSRV_SQLTYPE_DATETIME),
array(&$p3, null, null, SQLSRV_SQLTYPE_VARCHAR(50))
);
$sql = "INSERT INTO database_name (column1, column2, column3) values (?,?,?)";
$stmt = sqlsrv_prepare($conn, $sql, $params);
if( !$stmt ) { die( print_r( sqlsrv_errors(), true)); }
if(sqlsrv_execute( $stmt ) === false ) { die( print_r( sqlsrv_errors(), true)); }
?>
その他のSQLSRVパラメータについては、http://msdn.microsoft.com/en-us/library/cc626305.aspxにアクセスしてください。