Loading db/sql.php +22 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ class SQL extends \PDO { $engine, //! Database name $dbname, //! User name $user, //! Transaction flag $trans=FALSE, //! Number of rows affected by query Loading Loading @@ -246,7 +248,24 @@ class SQL extends \PDO { 'c.table_catalog':'c.table_schema'). '='.$this->quote($this->dbname)):''). ';', 'field','type','defval','nullable','YES','pkey','PRIMARY KEY') 'field','type','defval','nullable','YES','pkey','PRIMARY KEY'), 'oci'=>array( 'SELECT c.column_name AS field, '. 'c.data_type AS type, '. 'c.data_default AS defval, '. 'c.nullable AS nullable, '. '(SELECT t.constraint_type '. 'FROM all_cons_columns acc '. 'LEFT OUTER JOIN all_constraints t '. 'ON acc.constraint_name=t.constraint_name '. 'WHERE acc.table_name='.$this->quote(strtoupper($table)).' '. 'AND acc.owner='.$this->quote(strtoupper($this->user)).' '. 'AND acc.column_name=c.column_name '. 'AND constraint_type='.$this->quote('P').') AS pkey '. 'FROM all_tab_cols c '. 'WHERE c.table_name='.$this->quote(strtoupper($table)).' '. 'AND c.owner='.$this->quote(strtoupper($this->user)).' ', 'FIELD','TYPE','DEFVAL','NULLABLE','Y','PKEY','P') ); foreach ($cmd as $key=>$val) if (preg_match('/'.$key.'/',$this->engine)) { Loading Loading @@ -328,7 +347,7 @@ class SQL extends \PDO { elseif (preg_match('/mssql|sqlsrv|odbc/',$this->engine)) $key="[".$key."]"; elseif ($this->engine=='oci') $key='"'.strtoupper($key).'"'; $key='"'.$key.'"'; return $key; } Loading @@ -344,6 +363,7 @@ class SQL extends \PDO { $this->uuid=$fw->hash($this->dsn=$dsn); if (preg_match('/^.+?(?:dbname|database)=(.+?)(?=;|$)/i',$dsn,$parts)) $this->dbname=$parts[1]; $this->user=$user; if (!$options) $options=array(); $options+=array(\PDO::ATTR_EMULATE_PREPARES=>FALSE); Loading db/sql/mapper.php +7 −6 Original line number Diff line number Diff line Loading @@ -212,7 +212,7 @@ class Mapper extends \DB\Cursor { $sql.=' LIMIT '.(int)$options['limit']; if ($options['offset']) $sql.=' OFFSET '.(int)$options['offset']; $result=$this->db->exec($sql.';',$args,$ttl); $result=$this->db->exec($sql,$args,$ttl); $out=array(); foreach ($result as &$row) { foreach ($row as $field=>&$val) { Loading Loading @@ -260,7 +260,7 @@ class Mapper extends \DB\Cursor { * @param $ttl int **/ function count($filter=NULL,$ttl=0) { $sql='SELECT COUNT(*) AS rows FROM '.$this->table; $sql='SELECT COUNT(*) AS '.$this->db->quotekey('rows').' FROM '.$this->table; $args=array(); if ($filter) { if (is_array($filter)) { Loading @@ -272,7 +272,7 @@ class Mapper extends \DB\Cursor { } $sql.=' WHERE '.$filter; } $result=$this->db->exec($sql.';',$args,$ttl); $result=$this->db->exec($sql,$args,$ttl); return $result[0]['rows']; } Loading Loading @@ -330,11 +330,12 @@ class Mapper extends \DB\Cursor { if ($fields) $this->db->exec( 'INSERT INTO '.$this->table.' ('.$fields.') '. 'VALUES ('.$values.');',$args 'VALUES ('.$values.')',$args ); $seq=NULL; if ($this->engine=='pgsql') $seq=$this->source.'_'.end($pkeys).'_seq'; if ($this->engine!='oci') $this->_id=$this->db->lastinsertid($seq); if (!$inc) { $ctr=0; Loading Loading @@ -377,7 +378,7 @@ class Mapper extends \DB\Cursor { $sql='UPDATE '.$this->table.' SET '.$pairs; if ($filter) $sql.=' WHERE '.$filter; return $this->db->exec($sql.';',$args); return $this->db->exec($sql,$args); } } Loading Loading
db/sql.php +22 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ class SQL extends \PDO { $engine, //! Database name $dbname, //! User name $user, //! Transaction flag $trans=FALSE, //! Number of rows affected by query Loading Loading @@ -246,7 +248,24 @@ class SQL extends \PDO { 'c.table_catalog':'c.table_schema'). '='.$this->quote($this->dbname)):''). ';', 'field','type','defval','nullable','YES','pkey','PRIMARY KEY') 'field','type','defval','nullable','YES','pkey','PRIMARY KEY'), 'oci'=>array( 'SELECT c.column_name AS field, '. 'c.data_type AS type, '. 'c.data_default AS defval, '. 'c.nullable AS nullable, '. '(SELECT t.constraint_type '. 'FROM all_cons_columns acc '. 'LEFT OUTER JOIN all_constraints t '. 'ON acc.constraint_name=t.constraint_name '. 'WHERE acc.table_name='.$this->quote(strtoupper($table)).' '. 'AND acc.owner='.$this->quote(strtoupper($this->user)).' '. 'AND acc.column_name=c.column_name '. 'AND constraint_type='.$this->quote('P').') AS pkey '. 'FROM all_tab_cols c '. 'WHERE c.table_name='.$this->quote(strtoupper($table)).' '. 'AND c.owner='.$this->quote(strtoupper($this->user)).' ', 'FIELD','TYPE','DEFVAL','NULLABLE','Y','PKEY','P') ); foreach ($cmd as $key=>$val) if (preg_match('/'.$key.'/',$this->engine)) { Loading Loading @@ -328,7 +347,7 @@ class SQL extends \PDO { elseif (preg_match('/mssql|sqlsrv|odbc/',$this->engine)) $key="[".$key."]"; elseif ($this->engine=='oci') $key='"'.strtoupper($key).'"'; $key='"'.$key.'"'; return $key; } Loading @@ -344,6 +363,7 @@ class SQL extends \PDO { $this->uuid=$fw->hash($this->dsn=$dsn); if (preg_match('/^.+?(?:dbname|database)=(.+?)(?=;|$)/i',$dsn,$parts)) $this->dbname=$parts[1]; $this->user=$user; if (!$options) $options=array(); $options+=array(\PDO::ATTR_EMULATE_PREPARES=>FALSE); Loading
db/sql/mapper.php +7 −6 Original line number Diff line number Diff line Loading @@ -212,7 +212,7 @@ class Mapper extends \DB\Cursor { $sql.=' LIMIT '.(int)$options['limit']; if ($options['offset']) $sql.=' OFFSET '.(int)$options['offset']; $result=$this->db->exec($sql.';',$args,$ttl); $result=$this->db->exec($sql,$args,$ttl); $out=array(); foreach ($result as &$row) { foreach ($row as $field=>&$val) { Loading Loading @@ -260,7 +260,7 @@ class Mapper extends \DB\Cursor { * @param $ttl int **/ function count($filter=NULL,$ttl=0) { $sql='SELECT COUNT(*) AS rows FROM '.$this->table; $sql='SELECT COUNT(*) AS '.$this->db->quotekey('rows').' FROM '.$this->table; $args=array(); if ($filter) { if (is_array($filter)) { Loading @@ -272,7 +272,7 @@ class Mapper extends \DB\Cursor { } $sql.=' WHERE '.$filter; } $result=$this->db->exec($sql.';',$args,$ttl); $result=$this->db->exec($sql,$args,$ttl); return $result[0]['rows']; } Loading Loading @@ -330,11 +330,12 @@ class Mapper extends \DB\Cursor { if ($fields) $this->db->exec( 'INSERT INTO '.$this->table.' ('.$fields.') '. 'VALUES ('.$values.');',$args 'VALUES ('.$values.')',$args ); $seq=NULL; if ($this->engine=='pgsql') $seq=$this->source.'_'.end($pkeys).'_seq'; if ($this->engine!='oci') $this->_id=$this->db->lastinsertid($seq); if (!$inc) { $ctr=0; Loading Loading @@ -377,7 +378,7 @@ class Mapper extends \DB\Cursor { $sql='UPDATE '.$this->table.' SET '.$pairs; if ($filter) $sql.=' WHERE '.$filter; return $this->db->exec($sql.';',$args); return $this->db->exec($sql,$args); } } Loading