【发布时间】:2015-06-07 18:11:26
【问题描述】:
我的 PHP 看起来像这样:
$diagSel = $_POST['diagSel'];
$search_crit = $_POST['criteria']; //this is an entry like "85054,85206" (no quotes)
$sql1 = "SELECT * FROM `myTable` where`Diagnosis` = :diagnosis and `zip_code` in (:placeHolder) group by `Provider Number`";
$stmt = $dbh->prepare($sql1);
$stmt->bindParam(':diagnosis', $diagSel, PDO::PARAM_STR);
$stmt->bindParam(':placeHolder', $search_crit, PDO::PARAM_STR);
$stmt->execute();
$result1 = $stmt->fetchAll(PDO::FETCH_ASSOC);
header('Content-type: application/json');
echo json_encode($result1);
这就是问题所在...如果用户输入了多个以逗号分隔的邮政编码(以criteria 传递),则ECHOs 什么也没有。如果他们输入一个邮政编码,它会返回我所期望的。
有没有办法使用准备好的语句通过 PDO 传递逗号分隔值,例如 85054,85206?
谢谢。
【问题讨论】:
-
使用支持数组绑定的 ORM 或 PDO 包装器(Aura.SQL 支持,其他允许 Perl 样式的
??列表占位符)。或者:使用FIND_IN_SET()作为 CSV 列表。 -
以前没怎么用过
??方法……你能举个例子吗? -
这不是 PDO 的事情。这需要一个允许此类占位符的抽象库。否则,您将不得不求助于hodgepodge
join()/etc. workarounds。