当然,你必须对它进行消毒并逃离它。
否则,网站的任何作者/编辑都可以对您的数据库执行任何查询。
首先,决不能像在代码中那样创建SQL查询。决不要将原始SQL与任何可变或来自用户的内容连接起来。
您应该使用$wpdb->prepare
为此。
因此,您的代码应该更像这样:
$sql = "SELECT COUNT(meta_key) as count FROM {$wpdb->usermeta} WHERE meta_key = %s && meta_value = %s";
$member_count = $wpdb->get_var( $wpdb->prepare( $sql, \'mepr-address-state\', $atts[0] ) );
如您所见,获取所有行(只有一行)也没有意义,获取所有列(也只有一列)也没有意义。
这是将您从SQL注入中解救出来的转义部分。
但是是的,很可能您还应该在其中进行一些验证,但这取决于该参数的可用值。