function ajaxFetch () {
var search = $('input').val();
$.get('fetch.php', {search: search}, function(data){
$('div').html(data);
})
}
$('input').keyup(function(){
ajaxFetch();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='search'>
<div></div>
在我的脚本中,我从fetch.php
<?php
$search = $_GET['search'];
if(isset($_GET['offset'])){ $offset = $_GET['offset';] } else { $offset = 0 }
$limit = 5;
$sql = "
SELECT a.name, b.fname, c.lname, d.mname FROM table a
LEFT JOIN tableb b ON a.id = b.id
LEFT JOIN tablec c ON a.id = c.id
LEFT JOIN tabled d ON a.id = d.id
WHERE a.name LIKE %$search% AND a.vara = :vara AND a.varb = :varb AND a.varc = :varc
LIMIT $offset, $limit
";
~..prepare()..execute()..~
while($row = $stmt->fetch()){
echo "<span>{$row['name']},{$row['fname']}, {$row['lname']}, {$row['mname']}</span>";
}
$page = $_GET['page'];
$total = $stmt->rowCount();
$offset = ($page - 1) * $limit;
$start = $offset + 1;
$end = min(($offset + $limit), $total);
if ($total > 5) {
$prevlink = ($page > 1) ? '<a href="?page=1" title="First page">«</a> <a href="?page=' . ($page - 1) . '" title="Previous page">‹</a>' : '<span class="disabled">«</span> <span class="disabled">‹</span>';
$nextlink = ($page < $pages) ? '<a href="?page=' . ($page + 1) . '" title="Next page">›</a> <a href="?page=' . $pages . '" title="Last page">»</a>' : '<span class="disabled">›</span> <span class="disabled">»</span>';
}
?>
我尝试在同一个查询中使用rowCount()
来节省时间和SQL进程,但它没有用,所以我想知道什么是最好,最快最安全的方法来实现这个分页工作?
或者我只是使用传统的2个查询,其中一个是COUNT(*)
然后onclick
再次使用新的偏移量在分页链接调用ajaxFetch()
上?
答案 0 :(得分:-1)
由于用于生成输出的查询包含LIMIT
子句,因此永远不会返回所有可能行的数量,因此您必须执行两次查询。