假设我想创建一个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并在每个请求上生成整个过滤器。
答案 0 :(得分:0)
平。
您可以使用$filter = mysql_real_escape_string($filter);
或者您可以使用$ wpdb prepare函数(查找wordpress手册)。它负责sql注入。