用户可以使用选择和复选框表单搜索某些内容。数据以GET变量发送。
我收集了变量中的所有可能值并将其放入数组中:
$term_taxomony_ids_array = array($term_taxonomy_id_m, $term_taxonomy_id_l, $term_taxonomy_id_t_1, $term_taxonomy_id_t_2, $term_taxonomy_id_t_3, $term_taxonomy_id_t_4, $term_taxonomy_id_t_5, $term_taxonomy_id_t_6, $term_taxonomy_id_t_7, $term_taxonomy_id_t_8);
的print_r($ term_taxomony_ids_array);然后会给
例如:
Array (
[0] => 12
[1] => 14
[2] =>
[3] =>
[4] => 9
[5] =>
[6] => 2
[7] =>
[8] =>
[9] =>
)
如何使这个数组更简单但完全省略空结果(如评论中所示)? 我需要在数据库中找到符合所有所选条件的“地点”。 我的数据库表已设置好,因此我有两列。 1. Object_id 2. term_taxonomy_id。 term_taxonomy_id是数组中的值。 例如我的表看起来像这样
Object id term_taxonomy_id
2 12
2 3
3 12
3 14
3 9
3 2
4 5
5 9
所以只有object_id'3'匹配数组中的所有术语 - 12,14,9,2 如何运行查询以查找此结果? 我正在使用一个mysql数据库,phpmyadmin和我的网站建立在wordpress上。 感谢
答案 0 :(得分:4)
基本上:
SELECT objectID, COUNT(term_taxonomy_id) AS cnt
FROM yourtable
WHERE term_taxonomy_id IN (2, 9, 14, 12)
GROUP BY objectID
HAVING cnt = 4
查找具有一个或多个匹配分类标识ID的所有objectID,但只返回具有四个匹配分类标识ID的对象标识。
答案 1 :(得分:3)
使用IN,结合COUNT()和/ GROUP。
$array = array_filter(array_unique($array));
$count = count($array);
$sql = "SELECT id, COUNT(*) FROM table WHERE field IN (" . implode(',', $array) . ") GROUP BY id HAVING COUNT(*) = " . $count;
SQL可能有点过时(您可能需要重新订购has和group)。