PHP连接到不同计算机上的SQL Server

时间:2012-08-03 13:17:06

标签: php sql iis

我在Windows机器上有一个PHP网站,并希望将数据直接插入位于不同计算机上的IIS服务器上的SQL数据库?

我应该遵循哪种方法?

**我最初的想法是转移到由IIS托管的PHP页面,该页面执行查询然后重定向回我的网站。但是,我更喜欢更简单,更简单的方法。

IIS位于Windows Server 2008 R2上。

非常感谢您的帮助。谢谢!

2 个答案:

答案 0 :(得分:4)

如果您正在使用PHP,则可以使用PDO打开与另一台计算机上的数据库的连接:

$remotedb = new PDO("*dbtype*:dbname=*dbname*;host=*addressOfOtherMachine*", $user, $password);

http://www.php.net/manual/en/class.pdo.php

答案 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