다음과 같은 선택 목록이 양식 안에 있습니다.SQL에서 커밋 된 NULL이있는 목록 선택
<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 변수에 있습니다.
이제 문제가 발생했습니다. 양식을 사용할 때 제출시 빈 값을 선택하기 전까지는 모두 괜찮습니다. 이 $ 세부 여기서 문제는 내가 "NULL을"로 빈 옵션에 대한 값을 설정한다는 것입니다 $ _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은 모든 주위에 쉼표를 추가하기 때문에 그것을 삽입 NULL 대신 데이터베이스에 "NULL"을 넣으려고합니다. 이 경우 외래 키 제약 조건을 위반하게됩니다.
PHP/Kohana에서 NULL을 처리하는 간단한 방법이 있으므로 한 번 이상 NULL을 포함 할 수있는 각 쿼리를 비워 두거나 다시 작성할 필요가 없습니다. 여러 유효한 NULL을 얻을 수있을 때 어떻게됩니까? 분명히 이러한 유형의 상황을 간단하게 처리 할 수있는 방법이 있습니까?
전혀 아닙니다. 사실 나는 그 형태가 그렇게 추악하지 않다고 생각하지 않습니다. 나는 훨씬 더 많이 보았다. 아마 더 나은 방법을 보여줄 수 있을까요? – Matt