Happy Codings - Programming Code Examples
Html Css Web Design Sample Codes CPlusPlus Programming Sample Codes JavaScript Programming Sample Codes C Programming Sample Codes CSharp Programming Sample Codes Java Programming Sample Codes Php Programming Sample Codes Visual Basic Programming Sample Codes


Php Programming Code Examples

Php > Database Related Code Examples

Convert array vars for SQL statement (Postgres)

Convert array vars for SQL statement (Postgres) <?php function Get_DB_Values($db, $table, $fields) { // Get Metadata $meta = get_Metadata($db, $table); if (!$meta) { trigger_error('Get_DB_Values(): Failed to getting metada for '. $table, E_USER_WARNING); return NULL; } // Check values foreach($fields as $k => $v) { if (!isset($meta[$k])) { trigger_error('Get_DB_Values(): Non-existent field. Table: '. $table .'. Field: '.$k, E_USER_WARNING); return NULL; } $v = trim($v); // Value is NULL and default is defined, use DB default. if ($v !== '' || !$meta[$k]['hasdefault']) { switch ($meta[$k]['type']) { case 'bool': // Does not support numeric type. Must be string. $v = strtolower($v); if ($v === '') { $ret[$k] = 'NULL'; } elseif ($v == 't' || $v == 'true' || $v == 'y' || $v == 'yes' || $v == 'on') { $ret[$k] = 'TRUE'; } elseif ($v == 'f' || $v == 'false' || $v == 'n' || $v == 'no' || $v == 'off') { $ret[$k] = 'FALSE'; } else { trigger_error('Get_DB_Values(): BOOLEAN type has invalid value. ', E_USER_WARNING); return NULL; } break; case 'cidr': case 'inet': if ($v === '') { $ret[$k] = 'NULL'; } // Check format - 10.10.10.10 or 10.10.10.10/32 elseif (!ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]{1,2}){0,1}$',$v)) { trigger_error('Get_DB_Values(): INET/CIDR type has invalid format. ', E_USER_WARNING); return NULL; } else { $ret[$k] = "'$v'"; } break; case 'float': case 'float8': case 'numeric': case 'money': if ($v === '') { $ret[$k] = 'NULL'; } // Check format - Does not support '1.111E+10' notation. elseif (!ereg('^[0-9]*\.[0-9]*$|^[0-9]*$', $v)) { trigger_error('Get_DB_Values(): FLOAT/NUMERIC/MONEY type has invalid value. ', E_USER_WARNING); return NULL; } else { $ret[$k] = $v; } break; case 'interval': // Only allow INTEGER for interval case 'int': case 'int2': case 'int4': case 'int8': if ($v === '') { $ret[$k] = 'NULL'; } // Check format elseif (!ereg('^[0-9]*$',$v)) { trigger_error('Get_DB_Values(): INTEGER/INTERVAL type has invalid value. ', E_USER_WARNING); return NULL; } else { $ret[$k] = $v; } break; case 'bpchar': // char type case 'char': case 'text': case 'varchar': // NO length check - char/varchar will be truncated by DB if it's too long. $ret[$k] = ($v !== '') ? "'".addslashes($v)."'" : 'NULL'; break; case 'timestamp': case 'datetime': case 'date': // Check format - "2001/02/11 14:59:01", "2001/4/1 15:10" or "2001/11/15". if ($v === '') { $ret[$k] = 'NULL'; } elseif (!ereg('^([0-9]{4}[/-][0-9]{1,2}[/-][0-9]{1,2})([ \t]+(([0-9]{1,2}:[0-9]{1,2}){1}(:[0-9]{1,2}){0,1})){0,1}$',$v, $regs)) { trigger_error('Get_DB_Values(): DATE/TIMESTAMP type has invalid value. ', E_USER_WARNING); return NULL; } else { $ret[$k] = "'{$regs[1]} {$regs[3]}'"; } break; case 'oid': // OID type should not be INSERTed nor UPDATEd. (Add oid type if you use oid for BLOD) case 'serial': // Serial type should not be INSERTed nor UPDATEd. So treat as invalid type. default: trigger_error('Get_DB_Values(): INVALID datatype ', E_USER_WARNING); return NULL; break; } } } return $ret; } // Return matadata // return NULL if error // This is the same function function Get_MetaData($db, $table) { $rows = 0; // Number of rows $qid = NULL; // Query result resource $meta = array(); // Metadata array - return value // Get catalog data from system tables. $query=<<<EOQ SELECT a.attname, a.attnum, t.typname, a.attlen, a.atttypmod, a.attnotNULL, a.atthasdef FROM pg_class as c, pg_attribute a, pg_type t WHERE a.attnum > 0 AND a.attrelid = c.oid AND c.relname = '$table' AND a.atttypid = t.oid ORDER BY a.attnum; EOQ; $qid = pg_Exec($db, $query); // Check error if (!is_resource($qid)) { trigger_error('Get_Metadata(): metadata query fialed ', E_USER_WARNING); return NULL; } $rows = pg_NumRows($qid); // Store meta data for ($i = 0; $i < $rows; $i++) { $field_name = pg_Result($qid,$i,0); // Field Name $meta[$field_name]['id'] = pg_Result($qid,$i,1); // Attrbute ID $meta[$field_name]['type'] = pg_Result($qid,$i,2); // Data type name $meta[$field_name]['len'] = pg_Result($qid,$i,3); // Length: -1 for variable length $meta[$field_name]['modifier'] = pg_Result($qid,$i,4); // Modifier $meta[$field_name]['notnull'] = (pg_Result($qid,$i,5) === 't' ? TRUE : FALSE); // Not NULL? $meta[$field_name]['hasdefault'] = (pg_Result($qid,$i,6) === 't' ? TRUE : FALSE); // Has default value? } pg_FreeResult($qid); return $meta; } ?>