2017-11-30 1 views
0

を追加しようとすると、指定したboolean、パラメータ1は資源であることを期待:sqlsrv_has_rows()私は私のデータに改ページを追加しようとしているが、このようなエラーがあるページネーション機能

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

しかし、

私はそれについて考えていませんが、私は既にページネーションのための別の方法を試しましたが、結果はまだ同じです。なぜこれが起こったのですか?誰かが私にそれを説明し、修正するのを手伝ってもらえますか?まず、はっきりsqlsrv_query()はエラーが生じている

  <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> 

答えて

0

2つのこと...:

は、ここに私のコードです。クエリを実行した後でエラーをチェックする必要があります。 sqlsrv_errors()をご覧ください。

第二に、

しかし、私は私のクエリにLIMIT $start,$limitを削除するとき、ページがスムーズに実行します。..

LIMITは、MS SQL Serverの無効なためです。 (あなたはMySQLについて考えています。)MS SQL Serverにはother ways to paginate resultsがあります。

+0

それは、私はPHPスクリプトの先生ではなくSQLスクリプト経由でページネーションを行わなければならないということですか?あるいは、SQL関数を変更してPHPスクリプトの作業を続けますか?詳細を教えてください。 –

+0

@ DonnyK.Pratama:あなたのページングは​​、あなた次第です。結果セット全体を要求し、アプリケーションコードで必要な "ページ"にフィルタリングするのではなく、実際に必要なデータだけをデータベースから要求することをお勧めします。どのように*あなたのページングロジックを定義するかは別の話です。クエリに 'LIMIT'句を追加することで、データベースから結果をページするように見えます。しかし、それはあなたがSQL Serverでそれを行う方法ではありません。それを行うための他の戦略があります。リンクされた質問は、いくつかを探求するのに良い場所です。 – David

+0

大丈夫、私は今、理解していただきありがとうございます! :)) –

関連する問題