PHP5.4x 和 MySQL5.5+ 会导致错误信息:
Incorrect integer value: ” for column ‘ID’ at row 1 ”
主要是因为给定的字段值不符合给定的要求,尤其是在建表的时候指定了NOT NULL,而在insert/update操作时,又没有指定相应的值,就会报错。一种解决办法是修改MySQL的配置参数, STRICT_TRANS_TABLES, http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_strict_trans_tables 。
另外一种方式是按规范给相应的字段默认值。-gMIS 的更新使用的是后一种方式,主要修改如下:
1) comm/tblconf.php
$hmfield[$field] = $fieldv;
$hmfield[$field.”_default”] = $v[‘Default’]; # 新增,读取字段的默认值
$tmpsort = $hmfieldsortinxml[$field];
……
2) act/doaddmodi.php
$fieldv = $_REQUEST[$field];
if($fieldv == ”){
$fieldv = $hmfield[$field.”_default”]; # 新增,如果数值为空则读取默认值
}
else
{
…..