SQL从数组中获取数据库WHERE中的位置

时间:2014-07-28 20:02:34

标签: php sql database

我正在制作一个与全球,地区和国家分开的记分牌。我得到了全球和国家的工作。这是我的代码来获取每个国家/地区的数字:

$euCountries = array('AL', 'AD', 'AM', 'AT', 'BY', etc....);

if (in_array($CountryCode, $euCountries)) { $region = 'EU'; }

$countryRankSql = "SELECT name, FIND_IN_SET(xp, (
         SELECT GROUP_CONCAT(xp ORDER BY xp DESC) 
         FROM users WHERE countrycode = :CountryCode ) ) AS rank 
     FROM users WHERE id = :id";
$countryRankGet = $db->prepare($countryRankSql);
$countryRankGet->execute(array(
 ':CountryCode' => $CountryCode,
 ':id' => $id,
));
$countryRank = $countryRankGet->fetch()['rank'];

现在我想做同样的事情,但是数组中有多个CountryCodes(例如$ euCountries)。所以基本上只与国家sql相同WHERE countrycode = :CountryCode 是一系列国家。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

获取相同的字符串,而不转换为数组,并在select语句中使用它:

SELECT name, FIND_IN_SET(xp, (SELECT GROUP_CONCAT(xp ORDER BY xp DESC) FROM users WHERE countrycode in ($euCountries) ) ) AS rank FROM users WHERE id = :id

那就是它。