【发布时间】:2015-09-07 19:41:25
【问题描述】:
我在执行数组的 IN 语句时遇到问题。我将 IN 语句用于不同的公司站点类型 (fk_cs_type)。现在我的代码在它是单个数组时有效,例如数组(“内部站点”或数组(“供应商”)但是当有两个元素时它不起作用。任何关于我做错了什么的建议将不胜感激。
$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();
}
【问题讨论】:
-
Rizier123 我在此页面上尝试了两种解决方案,但我得到一个 HY093 无效参数编号绑定变量数与令牌数不匹配。我认为这与 $stmt->execute($in);有什么建议吗??