PHP MSSQL数据库Azure

时间:2015-06-21 23:45:42

标签: php sql-server json azure

我正在尝试使用PHP将来自Azure的SQL数据库中的解析数据转换为JSON。我在免费的网络托管服务器上有PHP脚本。当我要连接到Azure的SQL数据库时,我收到了一个错误。

我的PHP脚本

<?php

 $serverName = "tcp:ss4rda587x.database.windows.net,1433";
 $connectionOptions = array("Database"=>"DistribuireColete",
 "Uid"=>"danielcocos26@ss4rda587x", "PWD"=>"******");

 //Establishes the connection
 $conn = sqlsrv_connect($serverName, $connectionOptions);

 //Select Query
 $tsql = "SELECT * FROM Clienti";

 //Executes the query
 $getProducts = sqlsrv_query($conn, $tsql);

        if (!$getProducts)
        {
            //Query failed
            echo("Nu merge");
        }

        else
        {
            $clienti = array(); //Create an array to hold all of the contacts
            //Query successful, begin putting each contact into an array of contacts

            while ($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC)) //While there are still contacts
            {
                //Create an associative array to hold the current contact
                //the names must match exactly the property names in the contact class in our C# code.
                $client = array("ID" => $row['IdClient'],
                                 "Name" => $row['NumeClient'],
                                 "Number" => $row['TelNumar'],
                                 "ImageBase64" => base64_encode($row['Icon'])
                                 );

                //Add the contact to the contacts array
                array_push($clienti, $client);
            }

            //Echo out the contacts array in JSON format
            echo json_encode($clienti);
        }
?>

我收到的错误

 Warning: sqlsrv_query() expects parameter 1 to be resource, boolean given in H:\root\home\cdan26-001\www\site1\GetClienti.php on line 14

2 个答案:

答案 0 :(得分:1)

你需要:

  1. 找出您的免费网络托管服务提供商的公共IP(您的PHP脚本用于拨打电话的公共IP。这与免费的网络托管服务提供商意味着此IP很可能会不定期地更改。
  2. 检查Azure SQL Database Firewall规则和
  3. Let the public IP of the free web hosting provider through your Azure SQL Database Firewall
  4. 一个小建议 - 您最好使用免费的Azure Web站点 Web应用程序(http://azure.microsoft.com/en-us/services/app-service/web/),而不是免费的Web托管服务提供商。至少您不会遇到配置Azure SQL数据库防火墙的问题。

答案 1 :(得分:1)

我同意astaykov,请通过Azure门户设置'允许的IP地址'(您的免费网络托管服务提供商的公共IP):

enter image description here

否则您的网页应该在页面上打印“Nu merge”。另外,我在你的代码片段中有点困惑:

  

$ row = sqlsrv_fetch_array($ stmt,SQLSRV_FETCH_ASSOC)

您可能还想将$stmt更改为$getProducts