SQL SELECT除参数外的所有内容

时间:2016-08-31 13:00:15

标签: php mysql

我们假设您有一个查询,您可以根据这样的参数选择某些内容:

$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个国家/地区,它就会很有用,但它不起作用。有谁知道我怎么解决这个问题?

任何帮助都是真的很感激!

非常感谢提前

2 个答案:

答案 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);

注意: $参数应该是数组。