【问题标题】:Not getting anything back from sqlsrv_num_rows没有从 sqlsrv_num_rows 得到任何东西
【发布时间】:2011-08-19 12:13:27
【问题描述】:

我正在尝试通过 php 页面从 MS SQL 中提取数据。我有一个有效的连接,并且正在尝试一个简单的 SELECT * FROM MyTable 但无论我做什么 sqlsrv_num_rows 都是空白的!!!

这是我的代码:

    function connect() {

    $serverName = DB_HOST; //serverName\instanceName
    $connectionInfo = array( "Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD);
    $this->connection = sqlsrv_connect( $serverName, $connectionInfo);
    sqlsrv_connect( $serverName, $connectionInfo);


    if( $this->connection ) {
         echo "<br>Connection established.<br />";
    }else{
         echo "<br>Connection could not be established.<br />";
         die( print_r( sqlsrv_errors(), true));
    }       


}

已建立的连接的回声正在工作,所以那里的所有 AOK!

现在当我做一个简单的查询时:

    function query($sql) {
    if ($this->debug) {
        echo $sql . "<br />";
    }       
    $this->sql = $sql;
    $this->recordset = sqlsrv_query($this->connection, $sql);

    if (!$this->recordset) {
        die('<br><br>Invalid query :<br><br><bold>' . $this->sql . '</bold><br><br>' . sqlsrv_errors());
    }

    echo "<br>rows = " . sqlsrv_num_rows($this->recordset);

我从上面的回声中一无所获?有什么理由吗?或者你能建议一个新的回声我可以尝试调试吗?

我的 DB 类中的所有代码都是从 mysql 转换的,所以可能有一些错误正在造成损害!

我什至尝试过一个超级简单的版本,所有代码放在一起,它仍然是空白/错误:

    $server = DB_HOST;
$conn = sqlsrv_connect( $server, array( "Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD) );
$stmt = sqlsrv_query( $conn, "SELECT * FROM MyTable");
$row_count = sqlsrv_num_rows($stmt);
echo "<br>row count = " . $row_count;
if ($row_count === false)
  echo "\nerror\n";
else if ($row_count >=0)
  echo "\n$row_count\n";
  die;

【问题讨论】:

  • 我们能看到$sql的内容吗?
  • 对不起,我现在已经修复了,它需要 $options 添加到查询中:发布后立即找到答案!您在查询代码中需要这个: $this->sql = $sql; $params = 数组(); $options = array( "可滚动" => SQLSRV_CURSOR_KEYSET ); $this->recordset = sqlsrv_query($this->connection, $sql, $params, $options); “SQLSRV_CURSOR_KEYSET 允许您以任何顺序访问行。但是,如果从表中删除行(删除的行返回没有值),键集游标不会更新行数。键集是 SQLSRV_CURSOR_KEYSET 的缩写形式。”
  • 随意发布您自己的答案 ;-)
  • volkerk 所说的,将其作为答案发布并接受,这样任何搜索的人都可以快速看到找到了解决方案

标签: php sql-server


【解决方案1】:

试试这个.....

替换下面的语句

sqlsrv_query( $conn, "SELECT * FROM MyTable");

作为

sqlsrv_query( $conn, "SELECT * FROM MyTable", array(), array("Scrollable"=>"buffered"));

【讨论】:

  • 一定要解释一下!与复制粘贴相比,它有助于更​​好地理解 rader。 :)
猜你喜欢
  • 2018-05-19
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2016-07-05
相关资源
最近更新 更多