Obvious bugfixes
[carbonphp.git] / Source / carbon / database / drivers / mssql / mssql_driver.php
blob1a3468e87873554c52baf36137d2c141e9401281
1 <?php
2 /*------------------------------------------------------------
3 * CarbonPHP framework (C) Tom Bell
4 * http://tombell.org.uk
5 *------------------------------------------------------------*/
7 if (!defined('CARBON_PATH'))
9 exit('Direct script access is not allowed.');
12 class Carbon_Database_mssql_driver extends Carbon_Database
14 public function database_connect()
16 return @mssql_connect($this->hostname, $this->username, $this->password);
19 public function database_pconnect()
21 return @mssql_pconnect($this->hostname, $this->username, $this->password);
24 public function database_select()
26 return @mssql_select_db($this->database, $this->conn_id);
29 public function database_version()
31 return "SELECT @@VERSION AS ver";
34 public function database_execute($sql)
36 $sql = $this->database_prep_query($sql);
37 return @mssql_query($sql, $this->conn_id);
40 public function database_prep_query($sql)
42 return $sql;
45 public function trans_begin($test_mode = false)
47 if (!$this->trans_enabled)
49 return true;
52 if ($this->_trans_depth > 0)
54 return true;
57 $this->_trans_failure = ($test_mode === true) ? true : false;
58 $this->simple_query('BEGIN TRAN');
59 return true;
62 public function trans_commit()
64 if (!$this->trans_enabled)
66 return true;
69 if ($this->_trans_depth > 0)
71 return true;
74 $this->simple_query('COMMIT TRAN');
75 return true;
78 public function trans_rollback()
80 if (!$this->trans_enabled)
82 return true;
85 if ($this->_trans_depth > 0)
87 return true;
90 $this->simple_query('ROLLBACK TRAN');
91 return true;
94 public function escape_string($string)
96 return str_replace("'", "''", $string);
99 public function affected_rows()
101 return @mssql_row_affected($this->conn_id);
104 public function insert_id()
106 $ver = self::database_parse_major_version($this->database_version());
107 $sql = ($ver >= 8 ? "SELECT SCOPE_IDENTITY() AS last_id" : "SELECT @@IDENTITY AS last_id");
108 $query = $this->query($sql);
109 $row = $query->row();
110 return $row->last_id;
113 private function database_parse_major_version($version)
115 preg_match('/([0-9]+)\.([0-9]+)\.([0-9]+)/', $version, $ver_info);
116 return $ver_info[1];
119 public function count_all($table = '')
121 if ($table == '')
123 return '0';
126 $query = $this->query('SELECT COUNT(*) AS numrows FROM ' . $this->dbprefix . $table);
128 if ($query->num_rows() == 0)
130 return '0';
133 $row = $query->row();
134 return $row->numrows;
137 public function database_list_tables()
139 return 'SELECT name FROM sysobjects WHERE type = \'U\' ORDER BY name';
142 public function database_list_columns($table = '')
144 return "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '" . $this->database_escape_table($table) . "'";
147 public function database_field_data($table)
149 'SELECT TOP 1 * FROM ' . $this->database_escape_table($table);
152 public function database_error_message()
154 return '';
157 public function database_error_number()
159 return '';
162 public function database_escape_table($table)
164 return $table;
167 public function database_insert($table, $keys, $values)
169 return "INSERT INTO " . $this->database_escape_table($table) . " (" . implode(', ', $keys) . ") VALUES (" . implode(', ', $values) . ")";
172 public function database_update($table, $values, $where)
174 foreach($values as $key => $val)
176 $valstr[] = $key . " = " . $val;
179 return "UPDATE " . $this->database_escape_table($table) . " SET " . implode(', ', $valstr) . " WHERE " . implode(" ", $where);
182 public function database_delete($table, $where)
184 return "DELETE FROM " . $this->database_escape_table($table) . " WHERE " . implode(" ", $where);
187 public function database_limit($sql, $limit, $offset)
189 $i = $limit + $offset;
190 return preg_replace('/(^\SELECT (DISTINCT)?)/i', '\\1 TOP ' . $i . ' ' . $sql);
193 public function database_close($conn_id)
195 @mssql_close($conn_id);