php mysql搜索查询

时间:2010-11-22 08:03:08

标签: php mysql

我有一个关于属性搜索的搜索表单,其中包含一些搜索结果的元素。例如地区,位置,城市,卧室等 提交表单后,我可以通过$ _post获取所有表单元素的值。问题是,当我将实现分页时,我将如何获得下一页上的元素值?我应该使用某种全局变量/数组或会话吗? 你推荐什么?

3 个答案:

答案 0 :(得分:1)

要在下一页获取$ _post的值,您必须在分页链接中传递$ _post值。

例如,假设您有一个名为搜索的输入字段,您正在执行搜索。 所以你必须在每个分页链接上传递$ _POST ['search']。

  <a href='search.php?page=2&search="'. $_POST['search'].'"'>Page 2</a>

现在在第2页,您可以获得$ _GET ['search']并在查询中使用它

=============================================== ===============

您也可以使用会话

在提交后获得$ _Post值时,启动会话并将其保存在会话变量中。在这种情况下,您不必在分页链接中传递该值

session_start();
$_SESSION['search'] = $_POST['search'];

现在,您可以在查询中直接使用$ _SESSION ['search']值。

但是对于每次新搜索都会使此会话变量为空,因此如果搜索字段没有任何搜索值,那么它就不会在数据库中搜索其旧值。

答案 1 :(得分:0)

我建议您在mysql查询中使用LIMIT。如第一页,如果你想要10个结果:

SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 0,10

这会将结果限制为10。 对于第2页,你是圣人:

SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 11,20

当然,您要做的是将限制设置为PHP的变量。 希望这有帮助!

答案 2 :(得分:0)

使用2个搜索查询,第1个为select count(1) from _table_ WHERE _where_
,第二个为{select _fields_ from table where _where_ LIMIT _limit_,其中_limit_为{{1 }}