我在表单中有一个如下所示的选择列表。
<select name="0[voicemail]" >
<option value="" selected="selected"></option>
<option value="800">800</option>
<option value="801">801</option>
<option value="802">802</option>
<option value="803">803</option>
<option value="805">805</option>
<option value="807">807</option>
<option value="808">808</option>
<option value="809">809</option>
<option value="810">810</option>
<option value="811">811</option>
<option value="820">820</option>
<option value="830">830</option>
<option value="831">831</option>
<option value="9778">9778</option>
<option value="9995">9995</option>
</select>
这是由一些Kohana PHP代码生成的。
$id = 0;
$disabled = '';
foreach ( $line_detail as $line ){
echo '<tr class="d'.($id & 1).'">';
echo '<td>'.$line->did.form::hidden($id."[did]", $line->did).'</td>';
echo '<td>'.form::input($id."[cid_prefix]", $line->cid_prefix).'</td>';
echo '<td>'.$line->type.'</td>';
echo '<td>'.form::input($id."[ivr_context]", $line->ivr_context, "disabled='true'").'</td>';
if ($line->ivr_context != ''){
$disabled = "disabled='true'";
echo '<td>'.form::input(array('name'=>$id."[dial_timeout]", 'size'=>15,
'maxlength'=>3), $line->dial_timeout, $disabled).
form::hidden($id."[dial_timeout]", $line->dial_timeout).'</td>';
echo '<td>'.form::dropdown($id."[voicemail]", $phones, $line->voicemail, $disabled).
form::hidden($id."[voicemail]", $line->voicemail).'</td>';
} else {
echo '<td>'.form::input(array('name'=>$id."[dial_timeout]", 'size'=>15,
'maxlength'=>3), $line->dial_timeout, $disabled).'</td>';
echo '<td>'.form::dropdown($id."[voicemail]", $phones, $line->voicemail, $disabled).'</td>';
}
echo '<td>'.form::input($id."[notes]", $line->notes).'</td>';
echo "</tr>";
$id++;
}
不是所有显示的内容,但基本上选项都在$phones变量中。
现在问题来了。
当我使用表单提交时,在选择提交中的空值之前,一切都可以。
这是一个方法,其中$detail等同于$post
foreach($detail as $key => $val){
$this->db->query("UPDATE dids SET cid_prefix=?, dial_timeout=?, voicemail=?, notes=? WHERE did=?",
array($val['cid_prefix'],
$val['dial_timeout'],
$val['voicemail'],
$val['notes'],
$val['did']));
这里的问题是,我将空选项的值设置为“空”,但是因为Kohana在它插入的所有内容周围添加了逗号,所以它将尝试将“空”放入数据库而不是空。在这种情况下,这将违反外键约束。
在php/kohana中,是否有一种简单的方法来处理空值,这样我就不必检查空值并重写可能多次包含空值的每个查询。
当您可以得到多个有效的空值时会发生什么?当然有办法简单地处理这些情况吗?