diff options
Diffstat (limited to 'modules/database/classes')
-rw-r--r-- | modules/database/classes/db.php | 2 | ||||
-rw-r--r-- | modules/database/classes/driver/pdo/db.php | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/modules/database/classes/db.php b/modules/database/classes/db.php index 854b06f..dc6934f 100644 --- a/modules/database/classes/db.php +++ b/modules/database/classes/db.php @@ -44,6 +44,8 @@ abstract class DB { * @access public
*/
public abstract function get_insert_id();
+
+ public abstract function list_columns($table);
/**
* Executes a named query where parameters are passed as an associative array
diff --git a/modules/database/classes/driver/pdo/db.php b/modules/database/classes/driver/pdo/db.php index fa02e63..c73995d 100644 --- a/modules/database/classes/driver/pdo/db.php +++ b/modules/database/classes/driver/pdo/db.php @@ -60,7 +60,26 @@ class DB_PDO_Driver extends DB{ return $this->execute('SELECT lastval() as id')->current()->id;
return $this->conn->lastInsertId();
}
-
+
+ public function list_columns($table) {
+ $columns=array();
+ if ($this->db_type == 'mysql') {
+ $table_desc = $this->execute("DESCRIBE `$table`");
+ foreach($table_desc as $column)
+ $columns[]=$column->Field;
+ }
+ if ($this->db_type == 'pgsql') {
+ $table_desc = $this->execute("select column_name from information_schema.columns where table_name = '{$table}' and table_catalog=current_database();");
+ foreach($table_desc as $column)
+ $columns[]=$column->column_name;
+ }
+ if ($this->db_type == 'sqlite') {
+ $table_desc = $this->execute("PRAGMA table_info('$table')");
+ foreach($table_desc as $column)
+ $columns[]=$column->name;
+ }
+ return $columns;
+ }
/**
* Executes a prepared statement query
*
|