【问题标题】:SQLSRV queries are not workingSQLSRV 查询不起作用
【发布时间】:2013-07-26 11:18:08
【问题描述】:

我刚刚使用 IIS 和 Microsoft SQL 服务器设置了一个 PHP 服务器,它们都运行在同一台 Windows Server 2008 机器上。我在 PHP 上安装了 Microsoft 的 SQLSRV 驱动程序,因为我想在 PHP 中使用我的 SQL Server 数据库。

在代码中连接到 SQL Server 实例运行良好,但是当我尝试执行查询时,它不再起作用。我尝试从 php 代码运行的相同查询正在其他程序中运行,例如我的 SQL Server 管理器。即使是像“USE dbname”这样的简单命令也不能正常工作,但它们可以在 SQL Server 管理器中工作。

这是我正在使用的 PHP 代码。当我运行代码时,它显示已连接,然后出现错误选择 DB。

$conn = sqlsrv_connect("TRANSIP-VPS\SQLEXPRESS");
if( $conn === false )
  { die( FormatErrors( sqlsrv_errors() ) ); }
echo "Connected ";
      $selectDB = sqlsrv_query( $conn, "USE Vitare");
      if($selectDB === false){
        die("ERror selecting DB");  
      }

$tsql = "CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)";
  $getProducts = sqlsrv_query( $conn, $tsql);
  if ( $getProducts === false)
        {
        echo "Error creating table";
        die( FormatErrors( sqlsrv_errors() ) ); }
echo "stuff";
$row = sqlsrv_fetch_array( $getProducts, SQLSRV_FETCH_ASSOC);
echo $row['username'];

当我运行 sql_srverrors() 而不是打印 'error selection DB' 时,它只给了我 'Array' 这个词,仅此而已,没有错误消息,什么都没有。

【问题讨论】:

  • 表架构Vitare是否存在?
  • 是的,它出现在 SQL Server 管理中的数据库下
  • 试试USE Vitare;CREATE TABLE ...CREATE TABLE Vitare.dbo.Persons ...

标签: php sql sql-server sqlsrv


【解决方案1】:

试试这个连接数据库:

$serverName = "TRANSIP-VPS\SQLEXPRESS";
$connectionInfo = array( "Database"=>"Vitare" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);

【讨论】:

  • 我会尝试,但我认为它不会起作用,因为 Select * FROM Vitare.dbo.users 等其他简单命令也不起作用。
  • 一个连接链接到一个数据库,我认为sqlsrv_query( $conn, "USE Vitare"); 将不起作用。以上代码连接数据库。
  • 现在它甚至不再说已连接。我只是再次给我错误数组。因此,数据库 Vitare 可能有问题。但这会很奇怪,因为数据库在 SQL 服务器管理和我编写的 C# 脚本中运行良好。
  • FormatErrors 不是标准的 PHP 函数,您是否在某个地方定义了它?试试var_dump(sqlsrv_errors());
  • 错误信息太长无法评论,请看这个链接:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 2015-04-18
  • 2013-09-04
  • 2011-11-29
相关资源
最近更新 更多