【发布时间】:2015-05-30 13:40:34
【问题描述】:
我正在尝试根据某个普罗旺斯从我的 usermeta 表中获取值。
我住在荷兰。我们这里有 12 个普罗旺斯,我想选择居住在某个普罗旺斯的所有用户。所以我在用户数据库中添加了一个名为“provincies”的字段。一个值为<a href="results.php?provincie=provencename" 的按钮
告诉我根据 url 中的值选择谁。
这并不难。问题是用户可以有多个来源。
所以 meta_key provincie 字段保存 meta_value friesland','groningen','drenthe'
所以现在我需要搜索来自 url 的附加值是否在数据库 meta_value 中。
$provincie_array = "friesland','groningen','drenthe";
$query = "SELECT *
FROM $wpdb->usermeta
WHERE meta_key='provincie'
AND meta_value IN ('".$provincie_array."')";
我认为这是对的。然而 PHP 和 MySql 却有所不同。
谁能看到我在这里遗漏了什么?
-编辑-
$provincie = $_GET['provincie'];
global $wpdb;
//$query = "SELECT * FROM $wpdb->usermeta WHERE meta_key='provincie' AND meta_value IN ('".$provincie_array."')";
$provincie_array = array('friesland','groningen','drenthe','noordholland','flevoland','overijssel','zuidholland','utrecht','gelderland','zeeland','noordbrabant','limburg');
$provincie_check = '';
foreach ($provincie_array as $value) {
$provincie_check[]="`meta_value` LIKE '%[{$value}]%'";
}
$query = "SELECT *
FROM $wpdb->usermeta
WHERE meta_key='provincie'
AND ( ".implode(' OR ',$provincie_check)." )";
$personen = $wpdb->get_results($query);
【问题讨论】:
-
$provincie_array 中单词 drenthe 的最后一个单引号不应存在。
-
没错,错字,因为列表更长。但是问题仍然存在:-)
-
@MySQLRockstar 开始和结束引号在
IN函数中 -
根本不要使用单引号。 $provincie_array = "弗里斯兰、格罗宁根、德伦特";
-
@BishopBarber 我已经删除了我的 cmets。 干杯