【发布时间】:2014-11-05 19:13:48
【问题描述】:
我正在对 WordPress 插件进行小修改。用户将页面/帖子编号输入到他们想要从列表中排除的文本框中。
我需要过滤输入,然后检查它是否应该包含在 mySQL SELECT 中。有人可以帮忙解决这个问题吗?我似乎无法让它工作。我对 preg_match 表达式不是很熟悉。我想确保输入中只有数字和逗号。测试不同的 preg_match 总是在我身上返回 0。
Answer Bonus:如果可能,请确保它被输出,这样它就不会破坏 SQL。此代码只是接受或拒绝进入,而不“修复”它。
好数字 = "213" 或 "213, 252" Bad Numbers = 空白、“二七十三”、“红色是一种颜色。”
PHP
if ((!empty($excludedPagesPosts)) && (preg_match('/^[0-9\,]$/', $excludedPagesPosts))){
$exclude = 'ID Not In ($excludedPagesPosts) And';
} else {
$exclude = '';
}
mySQL
$sql = " SELECT
ID,
post_title,
post_modified
FROM
{$wpdb->posts}
WHERE
$exclude
post_status = 'publish' AND
{$postTypeWhere}
ORDER BY post_modified DESC";
【问题讨论】:
标签: php mysql wordpress plugins preg-match