Azure PHP应用程序和Azure SQL数据库

3

我有一个部署在Azure上的PHP应用程序,我希望这个应用程序能够连接到Azure SQL数据库。

$servername = "AZURE.database.windows.net";
$username = "user";
$password = "pass";
$dbname = "DB";

$conn= mssql_connect($servername,$username,$password, $dbname);

$sql = "INSERT INTO AOL (AgentId,FullName, Email)
VALUES ('1', 'Doe', 'john@example.com')";


mssql_query($sql, $conn);
mssql_close($conn);

当我运行这个php脚本时,出现了500错误。

你有在Azure和Azure SQL数据库上使用PHP的经验吗?或者必须在Azure上设置一些东西才能使用Azure SQL数据库?


你使用 Sql Azure 吗?如果是的话,请确保已经配置了防火墙规则,允许你的网站连接到它。 - Xiaomin Wu
是的,我正在使用Azure SQL,并且防火墙为我的网站设置了规则 :/ - Tomáš Jurásek
你使用什么格式作为用户名?另外,为了澄清,由于你正在连接到SQL数据库服务(而不是MS SQL Server),我相应地更改了标记。 - David Makogon
你的表定义(特别是列类型)是什么样子? - shoover
1个回答

3

默认情况下,Azure环境不安装php_mssql.dll扩展,而是安装php_sqlsrv.dll。

您可以使用sqlsrv()来代替:

$serverName = "<servername>.database.windows.net, 1433"; //serverName\instanceName
$connectionInfo = array("Database" => "<database_name>", "UID" => "<userid>", "PWD" => "<passowrd>");
$conn = sqlsrv_connect($serverName, $connectionInfo);

if ($conn) {
    echo "Connection established.<br />";

    $query = sprintf("SELECT 1 as test");
    $stmt = sqlsrv_query($conn, $query);
    if ($stmt === false) {
        die(print_r(sqlsrv_errors(), true));
    }

    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
        print_r($row);
    }

    sqlsrv_free_stmt($stmt);

} else {
    echo "Connection could not be established.<br />";
    die(print_r(sqlsrv_errors(), true));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接