Access does not support the LIMIT clause in it's SQL syntax, you have to use TOP instead.
example 'SELECT TOP 1000 * FROM table1' would return the first 1000 rows.
So you can't have an offset either. Basically it is only to limit the size of a resultset and speed processing up. Not a lot of use for pagination of results. And this holds true for ADO recordsets as well.
The secret is to track the identity column and ammend your query on the fly.
$_SESSION['base'] = "SELECT TOP 20 * FROM table ";
$_SESSION['where'] = " WHERE col1='" . $_POST['search'];
$_SESSION['last_id'] = "";
$_SESSION['order'] = " ORDER BY id";
$query = $_SESSION['base_query'] . $_SESSION['where'] . $_SESSION['last_id'] . $_SESSION['order'];
// run query
while ($row // etc {
// display etc
// then track the id
$_SESSION['last_id'] = " AND id>" . $row['id'];
}
This will page through the results 20 at a time: adjust for your particular case.