我正在尝试在我的数据上添加分页,但是有这样的错误:
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中进行分解结果。