2015-10-14 139 views
0

我是一名Web开发人员,对PHP + SQL数据库连接和显示结果有疑问。PHP + SQL数据库Azure错误

<?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(); 
?> 

结果:

Warning: sqlsrv_query() expects parameter 1 to be resource, null given in D:\home\site\wwwroot\test.php on line 29 Fatal error: Call to undefined function FormatErrors() in D:\home\site\wwwroot\test.php on line 31

enter image description here

回答

2

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!"); 
    } 
} 
0

不必返回从OpenConnection函数的连接。

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

此外:你不应该在网上发布你的凭证。

+0

非常感谢你,我不会再犯这个错误。 –