SQLSRV_HAS_ROWS()期望参数1是资源,尝试添加分页函数时给出了布尔值



我正在尝试在我的数据上添加分页,但是有这样的错误:

sqlsrv_has_rows() expects parameter 1 to be resource, boolean given

但是,当我在查询上删除LIMIT $start,$limit时,页面运行顺利。

我对此一无所知,我已经尝试了另一种分页的方法,但是结果仍然相同。为什么会发生这种情况?有人可以帮我解释和修复吗?

这是我的代码:

            <tbody>
          <?php
          //pagination
          $sqlcount   =   "SELECT COUNT(id_pelanggaran) FROM pelanggaran";
          $rscount    =   sqlsrv_has_rows(sqlsrv_query($conn,$sqlcount));
          $totaldata  =   $rscount[0];
          $page       =   isset($_GET['page']) ? $_GET['page']:1;
          $limit      =   50;
          $start      =   $limit * ($page-1);
          // Data Source
          $query    = "SELECT
                      dbo.pelanggaran.id_pelanggaran,
                      dbo.pelanggaran.waktu_pelanggaran,
                      dbo.pelanggaran.nama_pelanggar,
                      dbo.pelanggaran.bukti_screenshot,
                      dbo.pelanggaran.bukti_rekaman,
                      dbo.pelanggaran.bukti_dokumen,
                      dbo.jenis_pelanggaran.pelanggaran,
                      dbo.daftar_outlet.nama_outlet
                      FROM
                      dbo.pelanggaran
                      INNER JOIN dbo.jenis_pelanggaran ON dbo.pelanggaran.id_jenis_pelanggaran = dbo.jenis_pelanggaran.id
                      INNER JOIN dbo.daftar_outlet ON dbo.pelanggaran.id_lokasi_outlet = dbo.daftar_outlet.id
                      WHERE
                      dbo.pelanggaran.id_jenis_pelanggaran = dbo.jenis_pelanggaran.id ORDER BY id_pelanggaran ASC LIMIT $start,$limit";
          $result = sqlsrv_query($conn,$query);
          if (sqlsrv_has_rows($result) > 0) {
            while ( $data = sqlsrv_fetch_array($result)){
              ?>
              <tr>
                <?php echo "<td>" . $data['id_pelanggaran'] . "</td>"; ?>
                <?php echo "<td>" . $data['waktu_pelanggaran'] . "</td>"; ?>
                <?php echo "<td>" . $data['nama_pelanggar'] . "</td>"; ?>
                <?php echo "<td>" . $data['pelanggaran'] . "</td>"; ?>
                <?php echo "<td>" . $data['nama_outlet'] . "</td>"; ?>
                <?php echo "<td>" . $data['bukti_screenshot'] . "</td>"; ?>
                <?php echo "<td>" . $data['bukti_rekaman'] . "</td>"; ?>
                <?php echo "<td>" . $data['bukti_dokumen'] . "</td>"; ?>
                <td class="text-center">
                  <button class="btn btn-sm btn-primary" type="button" name="button">Edit</button>
                </td>
                <td>
                <button class="btn btn-sm btn-danger" type="button" name="button">Del</button>
                </td>
              </tr>
              <?php
            }
          }
          ?>
        </tbody>

两件事...首先,sqlsrv_query()显然导致错误。执行查询后,您需要检查错误。看看sqlsrv_errors()

第二,

但是,当我在查询上删除LIMIT $start,$limit时,页面运行顺利。

那是因为LIMIT在MS SQL Server中无效。(您正在考虑MySQL。)还有其他方法可以在MS SQL Server中进行分解结果。

最新更新