mssql.php (1849B)
1 <?php 2 namespace DB; 3 final class MSSQL { 4 private $connection; 5 6 public function __construct($hostname, $username, $password, $database, $port = '1433') { 7 if (!$this->connection = mssql_connect($hostname. ':' . $port, $username, $password)) { 8 throw new \Exception('Error: Could not make a database connection using ' . $username . '@' . $hostname); 9 } 10 11 if (!mssql_select_db($database, $this->link)) { 12 throw new \Exception('Error: Could not connect to database ' . $database); 13 } 14 15 mssql_query("SET NAMES 'utf8'", $this->connection); 16 mssql_query("SET CHARACTER SET utf8", $this->connection); 17 } 18 19 public function query($sql) { 20 $resource = mssql_query($sql, $this->connection); 21 22 if ($resource) { 23 if (is_resource($resource)) { 24 $i = 0; 25 26 $data = array(); 27 28 while ($result = mssql_fetch_assoc($resource)) { 29 $data[$i] = $result; 30 31 $i++; 32 } 33 34 mssql_free_result($resource); 35 36 $query = new \stdClass(); 37 $query->row = isset($data[0]) ? $data[0] : array(); 38 $query->rows = $data; 39 $query->num_rows = $i; 40 41 unset($data); 42 43 return $query; 44 } else { 45 return true; 46 } 47 } else { 48 throw new \Exception('Error: ' . mssql_get_last_message($this->connection) . '<br />' . $sql); 49 } 50 } 51 52 public function escape($value) { 53 $unpacked = unpack('H*hex', $value); 54 55 return '0x' . $unpacked['hex']; 56 } 57 58 public function countAffected() { 59 return mssql_rows_affected($this->connection); 60 } 61 62 public function getLastId() { 63 $last_id = false; 64 65 $resource = mssql_query("SELECT @@identity AS id", $this->connection); 66 67 if ($row = mssql_fetch_row($resource)) { 68 $last_id = trim($row[0]); 69 } 70 71 mssql_free_result($resource); 72 73 return $last_id; 74 } 75 76 public function __destruct() { 77 mssql_close($this->connection); 78 } 79 }