【问题标题】:SQL Server address to connect using php使用php连接的SQL Server地址
【发布时间】:2012-06-18 21:34:14
【问题描述】:

我使用此代码连接到 SQL Server 2012,但它不起作用

<?php
$objConnect = mssql_connect("localhost","usr","pass"); 

if($objConnect)  
{  
  echo "Database Connected.<br />";  
  echo mssql_error();
}  
else  
{  
  echo "Database Connect Failed.<br />";
}  

mssql_close($objConnect);  
?>  

它总是打印Database Connect Failed.

另外,如何从外部 Web 服务器连接到本地 SQL Server?

【问题讨论】:

    标签: php sql-server-2008 sql-server-2012


    【解决方案1】:

    如果您的版本是 SQL Server Express,您可能应该使用:

    $objConnect = mssql_connect("localhost\SQLEXPRESS","usr","pass");
    

    或者如果它是一个命名实例,那么

    $objConnect = mssql_connect("localhost\InstanceName","usr","pass");
    

    如果您需要远程连接,那么显然您不应该使用localhost,因为远程网络服务器如何定位您的localhost?您应该使用以下其中一项(假设远程 Web 服务器可以看到您的 IP 地址为 192.168.5.22 的机器):

    $objConnect = mssql_connect("192.168.5.22\SQLEXPRESS","usr","pass");
    $objConnect = mssql_connect("192.168.5.22\NamedInstance","usr","pass");
    $objConnect = mssql_connect("192.168.5.22","usr","pass");
    

    当然,您的防火墙必须打开端口 1433(可能还有 1434)才能接受该连接,而且这里还有很多其他可能出错的地方。

    不过,有一点调试 101 的建议。而不是:

    if($objConnect)  
    {  
      echo "Database Connected.<br />";  
      echo mssql_error();
    }  
    else  
    {  
      echo "Database Connect Failed.<br />";  
    }  
    

    为什么不:

    if($objConnect)  
    {
      echo "Database Connected.<br />";  
    }  
    else  
    {  
      echo "Database Connect Failed.<br />";  
      echo mssql_error();
    }  
    

    当数据库连接成功时,您当然不需要向页面写入错误。告诉我们您收到的实际错误消息可能会更好地让我们为您指明解决方案的方向。您编写的通用“数据库连接失败”消息不会向任何人提供有关实际问题的任何线索。但我敢打赌mssql_error() 可能!

    【讨论】:

    • 我的实例名称是 MSSQLSERVER ,但仍然无法连接,并且 msql_error() 没有显示任何内容,您能帮忙吗?谢谢您的回答
    • 对不起,如果你不能告诉我错误是什么,我无能为力。 mssql_error() 函数,或导致这一点的其他东西,是否有 try/catch 或其他潜在的处理程序,会在地板上丢弃错误?
    • 感谢我在服务器名中添加了 1434,localhost:1434\MSSQLSERVER 并且可以正常工作,但是外部服务器无法正常工作
    • 另一台服务器必须能够看到运行 SQL Server 的服务器。所以正如我所说,你不能说localhost,除非网络服务器和数据库在同一台机器上。当您说“外部服务器”时,您可以更具体吗?该服务器是否在您的域中,在您家的其他地方,在某处的托管服务器上......?为什么要在本地托管数据库并将远程 Web 服务器连接到它?通常人们会做相反的事情。此外,如果 SQL Server 浏览器服务正在运行,您不必指定端口号 - 也不知道为什么 1434 与 1433。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 2012-03-12
    • 2013-07-18
    • 1970-01-01
    • 2015-10-30
    • 2014-02-05
    相关资源
    最近更新 更多