【发布时间】:2012-11-17 06:40:01
【问题描述】:
我正在使用复选框来更改 SQL 查询。
HTML:
<input type="checkbox" name="chapter" value="7" /><label>ch. 7</label><br />
<input type="checkbox" name="chapter" value="13" /><label>ch. 13</label>
PHP:
//adjust query for chapter
$chap = $_POST['chapter'];
$chapter = "";
if(!empty($chap)){
$N = count($chap);
if($N == 1){
$chapter .= " AND chapter = '".$chap[0]."'";
}else{
$chapter .= " AND (chapter = '".$chap[0]."' OR chapter = '".$chap[1]."')";
}
}
$zquery = "SELECT * FROM records WHERE ".$zipcodes.$chapter;
当复选框未选中时,它可以正常工作。当第 7 章框被选中时,它工作正常。问题在于那个 13 盒。当我检查时,$chap[] 只返回值"1" 而不是"13"。例如,当我var_dump $zquery 我得到string(3384) "SELECT * FROM records WHERE (party_zip='34683' OR party_zip='34682' ) AND chapter = '1'"。
另外,$N 总是返回1,即使我同时选中了这两个框。 $_POST['chapter'] 不是数组吗?为什么只返回字符串中的第一个字符?
合十礼
【问题讨论】:
-
使用 foreach($_POST as $value){ echo "values=".$value."";} 了解 Post 项目的每个值使用 print_r($_POST );
-
7 和 13 都选择时是否有效?
-
@AnkurSaxena 如果你有答案写在答案部分..
-
@Douglas 不,我显示的 var_dump 是在选中两个框之后。
$N = count($chap);每次都在重新调整 1。
标签: php sql arrays string forms