PHP MYSQL PDO IN语句

PHP MYSQL PDO IN语句,php,mysql,pdo,Php,Mysql,Pdo,我在为数组执行IN语句时遇到问题。我将IN语句用于不同的companysite类型(fk_cs_类型)。现在,当我的代码是单个数组时,例如数组(“内部站点”)或数组(“供应商”)时,我的代码可以工作,但是当有两个元素时,我的代码就不工作了。如果您对我的错误有任何建议,我将不胜感激 $srchField = $srchInput->srchString; $in = array("INTERNAL SITE","SUPPLIER"); $type = implode(",", $in

我在为数组执行IN语句时遇到问题。我将IN语句用于不同的companysite类型(fk_cs_类型)。现在,当我的代码是单个数组时,例如数组(“内部站点”)或数组(“供应商”)时,我的代码可以工作,但是当有两个元素时,我的代码就不工作了。如果您对我的错误有任何建议,我将不胜感激

$srchField = $srchInput->srchString;
$in = array("INTERNAL SITE","SUPPLIER");    
$type = implode(",", $in);
$dbname = $_SESSION['dbname'];

    try {
        $conn = new PDO("mysql:host=localhost;dbname=$dbname", $db->id, $db->pass); //connect to db
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    //error modes     
        $stmt = $conn->prepare('SELECT cs_id, name, alias, fk_cs_type as type, is_active as active FROM companysite WHERE ( fk_cs_type IN (?)) AND (CASE WHEN "'.$isActive.'" = "ALL" THEN is_active = 0 OR 1  ELSE is_active = "'.$isActive.'" END) AND ((CASE WHEN "'.$srchBy.'" = "ALIAS" THEN alias ELSE name END)  LIKE ?)');
        $stmt->bindValue(1, "$type", PDO::PARAM_STR);
        $stmt->bindValue(2, "%$srchField%", PDO::PARAM_STR);
        $stmt->execute(); 
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);            
      }catch(PDOException $e) {         
       $return->error = $e->getMessage();
      }

在字符串上使用
in
语句时,仍然需要将每个字符串封装在数组中

$type = "'".(implode("', '", $in))."'";

我想这是引用的问题

$in=array(“内部站点”、“供应商”);
行之后添加此代码

$in = array_map(function($v){
          return "'$v'";
      }, $in);

Rizier123我在这个页面上尝试了这两种解决方案,但我得到了一个HY093无效参数编号绑定变量的数量与令牌的数量不匹配。我认为这与$stmt->execute($in)有关;有什么建议吗??