我在为数组执行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);