所以最重要的是我想通过带数字类型的输入标签插入Oracle数据库值。问题是当我输入值>> 0,它工作正常。但是当我离开时如果未填充,则会出现此错误,
警告:oci_execute():ORA-00936:缺少表达式 C:\ XAMPP \ htdocs中\ WeltesInformationCenter \内容\制造\更新\ FabricationQC \ processExceededQcQty.php 在第76行
所以这是输入标签:
echo "<td><input name='dataMarkingQc' id='dataMarkingQc' type='number' min='0' max='$availableMarkingQc' width='5' value='0'></td>";
处理方法是这样的,
$dataMarkingQc = intval($_POST['dataMarkingQc']);
if ($dataMarkingQc == 0){ $markingQcUser = ""; $markingQcDate = ''; }
else { $markingQcUser = $username; $markingQcDate = 'SYSDATE';}
$updateQcHistSql = "INSERT INTO FABRICATION_QC_HIST (MARKING_QC, MARKING_QC_DATE, MARKING_QC_SIGN) VALUES ($dataMarkingQc, $markingQcDate, '$markingQcUser')";
而var_dump
就是这个
["dataMarkingQc"]=> string(1) "0"
所以问题是,当我在输入标签中提交0值时,会出现错误。 MARKING_QC
的数据类型为int。
答案 0 :(得分:1)
这是你的代码。为了便于阅读,请在此处重新格式化。清晰的格式以提高可读性总是可以更容易地调试这样的东西:
$dataMarkingQc = intval($_POST['dataMarkingQc']);
if ($dataMarkingQc == 0) {
$markingQcUser = "";
$markingQcDate = '';
}
else {
$markingQcUser = $username;
$markingQcDate = 'SYSDATE';
}
$updateQcHistSql = "INSERT INTO FABRICATION_QC_HIST (MARKING_QC, MARKING_QC_DATE, MARKING_QC_SIGN)"
. " VALUES ($dataMarkingQc, $markingQcDate, '$markingQcUser')"
;
也许这会更好:
$dataMarkingQc = intval($_POST['dataMarkingQc']);
$markingQcUser = $dataMarkingQc == 0 ? null : $username;
$markingQcDate = $dataMarkingQc == 0 ? null : 'SYSDATE';
$updateQcHistSql = "INSERT INTO FABRICATION_QC_HIST (MARKING_QC, MARKING_QC_DATE, MARKING_QC_SIGN) VALUES ('$dataMarkingQc', '$markingQcDate', '$markingQcUser')";
我认为问题是'
和$dataMarkingQc
周围缺少单引号$markingQcDate
。我还简化了设置$markingQcUser
&amp;的逻辑。 $markingQcDate
使用三元逻辑并实际设置null
值而不是空字符串。