我在这件事上有点发疯。我正在编写一些类似于自定义搜索表单的代码。自定义搜索表单是复选框和一些下拉列表的混合体。正在搜索的所有字段也是自定义字段。自定义字段是通过自定义写入面板输入的。一些字段是单值字段,其他字段是序列化字段。
当前的代码可以工作,但我不确定是否应该采取另一种方法,我不想找人为我编写代码。我只是想知道如何做得更好。
$city = $_REQUEST[\'sCity\'];
$activity = $_REQUEST[\'sActivity\'][0];
$riverSegment = $_REQUEST[\'sRiverSegment\'];
$topicOfInterest = $_REQUEST[\'sTopicOfInterest\'][0];
$querystr = "
SELECT DISTINCT wp_posts.* FROM wp_posts, wp_postmeta
WHERE (
wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key = \'city\'
AND wp_postmeta.meta_value = \'$city\'
) OR (
wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key = \'riverSegment\'
AND wp_postmeta.meta_value = \'$riverSegment\'
) OR (
wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key = \'topicOfInterest\'
AND wp_postmeta.meta_value LIKE \'%$topicOfInterest%\'
) OR (
wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key = \'activity\'
AND wp_postmeta.meta_value LIKE \'%$activity%\'
) AND wp_posts.post_status = \'publish\' AND wp_posts.post_type = \'sites\'
ORDER BY wp_posts.post_date DESC";
我觉得上面的示例有缺陷,因为如果第一个条件找到匹配项,它将忽略其余条件。
Side Note: 如果我使用$wpdb->get\\u results();我是否仍应转义用户输入以保持其干净?