db = $db;
}
protected function _getFieldType($tbl, $field_name){
$stmt = $this->db->query("SHOW FIELDS FROM ".$tbl." where Field ='".$field_name."'");
$r = $stmt->fetch();
return $r['Type'];
}
protected function _getVarCharLength($Type){
$max_field_varchar_length = str_replace(array('varchar(',')'),'', $Type);
return$max_field_varchar_length;
}
protected function _getStringVarCharLength($str){
$stmt = $this->db->query('SELECT LENGTH("'.$str.'") AS len');
$r = $stmt->fetch();
return $r['len'];
}
protected function _valid_save_update_base($tbl_name, $ary_fields){ # 20190425: So far, only for varchar.
// valid start
$ary_invalid = array();
# varchar check
foreach($ary_fields as$field=>$conf){
$label = $conf[0];
$Type = $this->_getFieldType($tbl_name, $field);
if(strpos($Type,'varchar(')===0){
$len = $this->_getVarCharLength($Type);
$str = $conf[1];
if($this->_getStringVarCharLength($str)>$len){
$ary_invalid[] = ('"'.$label.'" -
"'.$str.'"
已超出系統儲存長度,請減少字數。');
}
}
}
if($ary_invalid){
$ary_invalid[] = 'Back';
die( implode('