2011-09-21 95 views
0

我正在使用名为DataTablesserver-side processing)的jQuery插件。问题是它限制了你可以形成查询的方式。默认方法看起来像这样。另一个查询中的MySQL查询

$sQuery = " 
    SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))." 
    FROM $sTable 
    $sWhere 
    $sOrder 
    $sLimit 
"; 

是否有可能使用我自己的复杂查询(可能包含一个where子句,连接等),同时仍然使用此约束?我需要能够根据情况“弹出”不同的查询,而不是每次都要重写整个事物。

我想只有一个文件处理多个DataTable的请求,并且只更改SQL。如果不清楚请评论。

+2

哎呀!这是一个安全噩梦。 – Johan

+1

你是什么意思?有人可以帮我弄清楚为什么我的问题已经有两个负面投票? – Chad

+0

顺便说一句,这正是它在官方网站上的发布方式:http://www.datatables.net/release-datatables/examples/server_side/server_side.html – Chad

回答

0

我想也许这里没有SQL解决方案。我可能不得不根据我的查询创建一个函数来修改整个事情。

0

那么,你的脚本需要返回的记录的JSON清单,同时考虑到HTTP请求参数而:

  • 过滤器(SSEARCH)
  • 排序(iSortCol_ *)
  • 当前页面(iDisplayStart & iDisplayLength)

它还需要应用过滤器后返回的总记录数。

如何在服务器端生成该列表取决于您,您可以根据需要编写复杂的查询。

允许更复杂的查询,同时仍然最小化样板代码的一种方法是将示例的功能封装在类中,但是将选择和计数查询提取到方法中。基类会像你的例子那样返回查询,但你可以在子类中覆盖查询,并按照你的意愿返回查询。但是,在生成过滤器,排序和页面参数时,您需要小心谨慎。

相关问题