【问题标题】:PHP + SQL Database Azure errorPHP + SQL 数据库 Azure 错误
【发布时间】:2016-01-12 13:34:57
【问题描述】:

我是 web 开发的初学者,有一个关于 PHP + SQL 数据库连接和显示结果的问题。

<?php

    ini_set('display_errors',1);
    ini_set('display_startup_errors',1);
    error_reporting(-1);

    function OpenConnection()
    {
        try
        {
            $serverName = "tcp:***,1433";
            $connectionOptions = array("Database"=>"flan",
                "Uid"=>"***", "PWD"=>"***");
            $conn = sqlsrv_connect($serverName, $connectionOptions);
            if($conn == false)
                die(FormatErrors(sqlsrv_errors()));
        }
        catch(Exception $e)
        {
            echo("Error!");
        }
    }

    function ReadData()
    {
        try
        {
            $conn = OpenConnection();
            $tsql = "SELECT * FROM tour_id";
            $getProducts = sqlsrv_query($conn, $tsql);
            if ($getProducts == FALSE)
                die(FormatErrors(sqlsrv_errors()));
            $productCount = 0;
            while($row = sqlsrv_fetch_array($getProducts, SQLSRV_FETCH_ASSOC))
            {
                echo($row['tour_title']);
                echo("<br/>");
                $productCount++;
            }
            sqlsrv_free_stmt($getProducts);
            sqlsrv_close($conn);
        }
        catch(Exception $e)
        {
            echo("Error!");
        }
    }

    echo ReadData();
?>

结果:

警告:sqlsrv_query() 期望参数 1 是资源,给定 null 在 D:\home\site\wwwroot\test.php 第 29 行致命错误:调用 D:\home\site\wwwroot\test.php 中的未定义函数 FormatErrors() 第 31 行

【问题讨论】:

    标签: php sql-server azure azure-sql-database


    【解决方案1】:

    您的Openconnection() 函数没有返回任何内容,因此$conn 将始终为null

    像这样在你的函数中添加一个返回行来返回连接:

    function OpenConnection()
    {
        try
        {
            $serverName = "***";
            $connectionOptions = array("Database"=>"***", "Uid"=>"***", "PWD"=>"***");
            $conn = sqlsrv_connect($serverName, $connectionOptions);
            if($conn == false)
                die(FormatErrors(sqlsrv_errors()));
    
            return $conn; // <--- Here
        }
        catch(Exception $e)
        {
            echo("Error!");
        }
    }
    

    【讨论】:

      【解决方案2】:

      您没有从 OpenConnection 函数返回连接。

      //...
      $conn = sqlsrv_connect($serverName, $connectionOptions);
      if($conn == false)
          die(FormatErrors(sqlsrv_errors()));
      return $conn;
      //...
      

      此外:您不应在线发布您的凭据。

      【讨论】:

      • 非常感谢,我不会再犯这个错误了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多