Wordpress插件:一种存储mySQL查询条件的安全方法

时间:2015-03-21 12:15:20

标签: php mysql wordpress

假设我想创建一个wordpress插件,它将从wordpress数据库中的插件自定义表中获取数据,并为每个帖子添加一些内容。这个犯规看起来像这样: SELECT * FROM $my_table WHERE time BETWEEN $prevoius_post_time AND $current_post_time ORDER BY time LIMIT 5000

应该有一种方法可以通过帖子编辑器修改这个查询,为此添加一些额外的过滤器,所以我最终会得到类似的东西:

SELECT * FROM $my_table WHERE time BETWEEN $prevoius_post_time AND $current_post_time && $filter ORDER BY time LIMIT 5000

其中$filer可能类似于filterrow1 != 300 && filterrow2 >=7,它将在发布新帖子之前使用后端中的表单($ _POST)创建。

现在我不知道在哪里存储$ filer变量,因为我有点害怕SQL注入等。是否足够安全将$ filer存储在帖子meta via update_post_meta()中并且只是接收它在实际查询之前的get_post_meta()函数?

或者我错过了其他任何更好的方式? 由于过滤器可能变得非常复杂,我真的没有看到任何方式将$ filter存储为像$ key =>这样的数组; $ value并在每个请求上生成整个过滤器。

1 个答案:

答案 0 :(得分:0)

平。 您可以使用$filter = mysql_real_escape_string($filter);或者您可以使用$ wpdb prepare函数(查找wordpress手册)。它负责sql注入。