PHP中的参数号SQL请求无效

My code is returning

PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

I have no idea where is the problem is as Names of fields are good.

$bdd = new PDO('mysql:host=localhost';dbname='check', 'root', 'root');

$dirname = './check/';
$dir = opendir($dirname);

$req = "SELECT filename FROM file WHERE filename IN (";
$params = array();
$i = 0;
    while($file = readdir($dir)) {
        if($file != '.' && $file != '..' && !is_dir($dirname.$file))
        {
            if($i > 1) $req.= ', ';  else $i++;
            $req .= "?";
            $params[] = $file;
        }
    }
$req .= ")";
closedir($dir);

$stmt = $bdd->prepare($req);
$stmt->execute($params);