首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP sqlsrv_fetch_array问题&& sqlsrv_num_rows -1

PHP sqlsrv_fetch_array问题&& sqlsrv_num_rows -1
EN

Stack Overflow用户
提问于 2022-02-04 16:26:24
回答 1查看 154关注 0票数 -1

一个新的网络服务器已经为我站了起来。它是Ubuntu20.04,上面有PHP 7.4.3。我正在使用2012。我可以将SQL查询发送到DB服务器,并在中看到它。我可以从分析器中复制它,并且它在中运行良好,但是,当我试图将结果回显到我的页面时,我遇到了问题。当我使用sqlsrv_num_rows时,我得到-1.能给我一只手吗?

代码语言:javascript
复制
<?php
    if(isset($_POST['getPassBtn'])){
        #DATABASE LOGIN
        include './php/inc/dbLogin/mydb.php';
    
        #FORM POST VARIABLES
        $badge = $_POST['empId'];
        //$badge = (int)$badge;
        
        #check badge entry for paramiters
        if($badge == '' || $badge < 10000 || $badge > 30000){
            echo '<br/> ERROR : Invalid Badge Number <br/>';
            die();
        }
        
        $sql = "USE mydb SET NOCOUNT ON SELECT badgeNumber, userPassword FROM dbo.users WHERE badgeNumber = '$badge' ORDER BY badgeNumber ASC --getTestData.php";
        //$sql = "USE toolsMeskwaki SELECT * FROM bingoProgressive.users ORDER BY badgeNumber ASC --getTestData.php";
        $params = array(); 
        $options =  array( 'Scrollable' => 'buffered');
        
        $stmt = sqlsrv_query( $conn, $sql, $params, $options);
        
        #check if query returns false
        if( $stmt === false ) {
            die( print_r( sqlsrv_errors(), true));
        }else{
            echo '<br/> Query sent to SQL Server <br/>';
            
        }
        
        /*
        $row_count = sqlsrv_num_rows( $stmt );
   
        if ($row_count === false){
            echo "Error in retrieveing row count.";
        }else{
            echo $row_count;
        }
        */
        
        
        #Fetching Data by array
        while($row = sqlsrv_fetch_array($stmt)){
            echo 'badgeNumber '.$row['badgeNumber'];
            echo 'userPassword '.$row['userPassword'];
            
        }
        
        
        #release query
        sqlsrv_free_stmt($stmt);
        
        #CLOSE DATA BASE CONNECTION
        sqlsrv_close($conn);
        echo "<br/> SQL Server Connection closed.<br />";
        
    }else{
        echo '<br/> click GET btn to connect SQL Server <br/>';
    }
    
?>
EN

回答 1

Stack Overflow用户

发布于 2022-02-04 18:10:07

你提交了三份不同的声明:

代码语言:javascript
复制
USE mydb
SET NOCOUNT ON
SELECT badgeNumber, userPassword FROM dbo.users WHERE badgeNumber = '$badge' ORDER BY badgeNumber ASC

它在中工作,有两个原因:

  • 虽然自动魔术语句检测已经被废弃了几年(您现在希望使用;作为分隔符),但仍然支持它。
  • 查询工具专门设计为一次运行多个语句。

我们知道查询()支持它,因为它没有返回false。但是,考虑到您正在运行三个语句,您需要使用结果()两次移动到第三个结果集。

附带说明:

  • 您可以使用连接()提供初始数据库。如果您使用其中的几个数据库,并且不想将名称添加为mydb.dbo.users,则只需要切换DB。
  • SQLSRV支持准备好的语句(请参阅准备()执行())。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70989685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档