我们假设您有一个查询,您可以根据这样的参数选择某些内容:
$parameters = [$country];
$query = 'SELECT g.* FROM game g ' .
'INNER JOIN game_country gc ON g.id = gc.gameId ' .
'INNER JOIN countries c ON c.id = gc.countryId ' .
'WHERE c.name = ? ';
$stmt = $this->_db->query($query, $parameters);
所以这是如何工作的,你选择你想要使用的国家。
我的目标是选择将从选择中排除的国家/地区。
所以我在WHERE clausule
中尝试过这个'WHERE c.name <> ? ';
只要您选择了1个国家/地区,它就会很有用,但它不起作用。有谁知道我怎么解决这个问题?
任何帮助都是真的很感激!
非常感谢提前
答案 0 :(得分:1)
尝试使用NOT IN:
'WHERE c.name NOT IN ( ? ) ';
并且参数:
$stmt = $this->_db->query($query, implode(',',$parameters));
答案 1 :(得分:1)
你尝试像
// it is reset the index
$param_array = array_values($parameters);
$qMarks = str_repeat('?,', count($param_array) - 1) . '?';
$query = 'SELECT g.* FROM game g ' .
'INNER JOIN game_country gc ON g.id = gc.gameId ' .
'INNER JOIN countries c ON c.id = gc.countryId ' .
'WHERE c.name NOT IN ($qMarks) ';
$stmt = $this->_db->query($query, $parameters);
注意: $参数应该是数组。