我在Windows机器上有一个PHP网站,并希望将数据直接插入位于不同计算机上的IIS服务器上的SQL数据库?
我应该遵循哪种方法?
**我最初的想法是转移到由IIS托管的PHP页面,该页面执行查询然后重定向回我的网站。但是,我更喜欢更简单,更简单的方法。
IIS位于Windows Server 2008 R2上。
非常感谢您的帮助。谢谢!
答案 0 :(得分:4)
如果您正在使用PHP,则可以使用PDO打开与另一台计算机上的数据库的连接:
$remotedb = new PDO("*dbtype*:dbname=*dbname*;host=*addressOfOtherMachine*", $user, $password);
答案 1 :(得分:1)
我使用PHP中的SQLSRV连接到2008 R2上的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