-gMIS更新兼容Strict SQL Mode

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
{

…..

 

此条目发表在-gMIS, -GWA2, 编程技术, 计算机技术分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code