【问题标题】:Row count in PHP from MSSQL来自 MSSQL 的 PHP 行数
【发布时间】:2015-12-17 13:13:44
【问题描述】:

我开始学习 PHP,需要连接到 SQL Server。我使用的网络服务器是 Apache。我下面的 PHP 在浏览器窗口中输出“已建立连接”没问题,但为了确保我也获取数据,我包含了用于获取行数的代码,但由于某种原因,行数周围的代码似乎不起作用,但尚未行计数部分之后的代码将“返回的结果”输出到浏览器。我尝试使用 COUNT(Name) 将 SELECT 更改为计数,并且也更改了

$result = sqlsrv_query($conn, $query)

$result = sqlsrv_query($conn, $query, array(), array("Scrollable" => 
'static'))

但到目前为止,两者都没有奏效。为什么行数不起作用?

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>Check SQL Server Connection</title>
 </head>
 <body>
   <?php
     $serverName = "IT90334\SQLEXPRESS";
     $connectionInfo = array('Database' => 'AdventureWorks');
     $conn = sqlsrv_connect($serverName, $connectionInfo);

     if ($conn) {
       echo "Connection Established.<br />";
     } else {
       echo "Something went wrong while connecting to MSSQL.<br />";
       die(print_r(sqlsrv_errors(), true));
     }

     $query = "SELECT Name FROM production.Location"
     $result = sqlsrv_query($conn, $query)
        or die('An error has occurred');

     $rowcount = sqlsrv_num_rows($result);

     if($rowcount === FALSE){
       echo "failure";
     }
     else {
       echo $rowcount;
     }

     if($result === FALSE){
       die(print_r(sqlsrv_errors(), true));
     }
     else {
       echo "Results returned. <br />;
     }

     sqlsrv_close($conn);

  ?>
  </body>
</html> 

【问题讨论】:

  • var_dump($rowcount) 告诉你什么?

标签: php sql-server apache


【解决方案1】:

这里有几个语法问题:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>Check SQL Server Connection</title>
 </head>
 <body>
   <?php
     $serverName = "IT90334\SQLEXPRESS";
     $connectionInfo = array('Database' => 'AdventureWorks');
     $conn = sqlsrv_connect($serverName, $connectionInfo);

     if ($conn) {
       echo "Connection Established.<br />";
     } else {
       echo "Something went wrong while connecting to MSSQL.<br />";
       die(print_r(sqlsrv_errors(), true));
     }

     $query = "SELECT Name FROM production.Location"; -- HERE
     $result = sqlsrv_query($conn, $query)
        or die('An error has occurred');

     $rowcount = sqlsrv_num_rows($result);

     if($rowcount === FALSE){
       echo "failure";
     }
     else {
       echo $rowcount;
     }

     if($result === FALSE){
       die(print_r(sqlsrv_errors(), true));
     }
     else {
       echo "Results returned. <br />"; -- HERE
     }

     sqlsrv_close($conn);

  ?>
  </body>
</html> 

记住总是用分号结束你的行,并用双引号/单引号关闭你的字符串(最好是双引号并在里面嵌套单引号)。

【讨论】:

  • 谢谢。我纠正了我的语法错误,结果是一样的
  • @mjhenry 如果您无法判断这些错误是否存在,那可能意味着您关闭了错误报告,当您试图追踪问题时,这将是一件坏事。 Turn on all the error reporting you can.
【解决方案2】:

发现在我的代码中,其中一个 $rowcount 变量实际上是 $rowCount(大写 C)。这使代码工作并输出失败。但后来我更改了 $result 的设置,再次具有可滚动的静态参数,如此处所示并且它起作用了

$result = sqlsrv_query($conn, $query, array(), array("Scrollable" => 
'static'))

【讨论】:

    猜你喜欢
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多