Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00020 final class MySQLim extends Sequenceless
00021 {
00025 public static function getDialect()
00026 {
00027 return MyImprovedDialect::me();
00028 }
00029
00033 public function setDbEncoding()
00034 {
00035 mysqli_set_charset($this->link, $this->encoding);
00036
00037 return $this;
00038 }
00039
00043 public function connect()
00044 {
00045 if ($this->persistent)
00046 throw new UnsupportedMethodException();
00047
00048 $this->link = mysqli_init();
00049
00050 try {
00051 mysqli_real_connect(
00052 $this->link,
00053 $this->hostname,
00054 $this->username,
00055 $this->password,
00056 $this->basename,
00057 $this->port,
00058 null,
00059 MYSQLI_CLIENT_FOUND_ROWS
00060 );
00061 } catch (BaseException $e) {
00062 throw new DatabaseException(
00063 'can not connect to MySQL server: '.$e->getMessage()
00064 );
00065 }
00066
00067 if ($this->encoding)
00068 $this->setDbEncoding();
00069
00070 return $this;
00071 }
00072
00076 public function disconnect()
00077 {
00078 if ($this->isConnected())
00079 mysqli_close($this->link);
00080
00081 return $this;
00082 }
00083
00088 public function queryCount(Query $query)
00089 {
00090 $this->queryNull($query);
00091
00092 return mysqli_affected_rows($this->link);
00093 }
00094
00095 public function queryRow(Query $query)
00096 {
00097 $res = $this->query($query);
00098
00099 if ($this->checkSingle($res))
00100 return mysqli_fetch_assoc($res);
00101 else
00102 return null;
00103 }
00104
00105 public function queryColumn(Query $query)
00106 {
00107 $res = $this->query($query);
00108
00109 if ($res) {
00110 $array = array();
00111
00112 while ($row = mysqli_fetch_row($res))
00113 $array[] = $row[0];
00114
00115 return $array;
00116 } else
00117 return null;
00118 }
00119
00120 public function querySet(Query $query)
00121 {
00122 $res = $this->query($query);
00123
00124 if ($res) {
00125 $array = array();
00126
00127 while ($row = mysqli_fetch_assoc($res))
00128 $array[] = $row;
00129
00130 return $array;
00131 } else
00132 return null;
00133 }
00134
00135 public function queryRaw($queryString)
00136 {
00137 if (!$result = mysqli_query($this->link, $queryString)) {
00138
00139 $code = mysqli_errno($this->link);
00140
00141 if ($code == 1062)
00142 $e = 'DuplicateObjectException';
00143 else
00144 $e = 'DatabaseException';
00145
00146 throw new $e(
00147 mysqli_error($this->link).' - '.$queryString,
00148 $code
00149 );
00150 }
00151
00152 return $result;
00153 }
00154
00155 public function getTableInfo($table)
00156 {
00157 throw new UnimplementedFeatureException();
00158 }
00159
00160 public function hasQueue()
00161 {
00162 return false;
00163 }
00164
00165 protected function getInsertId()
00166 {
00167 return mysqli_insert_id($this->link);
00168 }
00169
00170 private function checkSingle($result)
00171 {
00172 if (mysqli_num_rows($result) > 1)
00173 throw new TooManyRowsException(
00174 'query returned too many rows (we need only one)'
00175 );
00176
00177 return $result;
00178 }
00179 }
00180 ?>