【发布时间】:2016-12-23 17:44:46
【问题描述】:
这是我表单中的 $_POST 数组。
Array ( [prescribedid] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 9 [4] => 13 )
我想为数组中的任何项目创建一个选择。我写了这个,它产生了正确的 SELECT,但是 if() 消除尾随 OR 使它笨拙。
$query = "SELECT * ";
$query .= "FROM prescribed WHERE ";
for($i=0; $i<count($_POST["prescribedid"]); $i++) {
$query .= "prescribedid={$_POST['prescribedid'][$i]} ";
if($i < (count($_POST["prescribedid"])-1)) {
$query .= "OR ";
}
}
它产生这个:
SELECT * FROM prescribed WHERE prescribedid=1 OR prescribedid=2 OR prescribedid=3 OR prescribedid=9 OR prescribedid=13
是否有另一种方法对 SELECTS 进行分组或编写 FOR() 以使其更清晰,即没有最后一个 IF()。
【问题讨论】:
-
Tip:您可以使用IN以避免多个OR子句。...WHERE prescribedid IN (1,2,3,9,13).... -
Tip:你需要使用PDO或者vaidate输入。此代码可用于 SQL 注入。