24 require_once
CORE_PATH .
'libs/db/adapters/pdo.php';
100 $table = addslashes(
"$table");
102 $num = $this->
fetch_one(
"SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$table'");
104 $schema = addslashes(
"$schema");
105 $num = $this->
fetch_one(
"SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$table' AND TABLE_SCHEMA = '$schema'");
121 if (isset($params[
'limit']) && is_numeric($params[
'limit'])) {
122 $sql_new.=
" LIMIT $params[limit]";
125 if (isset($params[
'offset']) && is_numeric($params[
'offset'])) {
126 $sql_new.=
" OFFSET $params[offset]";
141 return $this->
query(
"DROP TABLE IF EXISTS $table");
143 return $this->
query(
"DROP TABLE $table");
162 $create_sql =
"CREATE TABLE $table (";
163 if (!is_array($definition)) {
164 new KumbiaException(
"Definición invalida para crear la tabla '$table'");
167 $create_lines = array();
169 $unique_index = array();
173 foreach ($definition as $field => $field_def) {
174 if (isset($field_def[
'not_null'])) {
175 $not_null = $field_def[
'not_null'] ?
'NOT NULL' :
'';
179 if (isset($field_def[
'size'])) {
180 $size = $field_def[
'size'] ?
'(' . $field_def[
'size'] .
')' :
'';
184 if (isset($field_def[
'index'])) {
185 if ($field_def[
'index']) {
186 $index[] =
"INDEX(`$field`)";
189 if (isset($field_def[
'unique_index'])) {
190 if ($field_def[
'unique_index']) {
191 $index[] =
"UNIQUE(`$field`)";
194 if (isset($field_def[
'primary'])) {
195 if ($field_def[
'primary']) {
196 $primary[] =
"`$field`";
199 if (isset($field_def[
'auto'])) {
200 if ($field_def[
'auto']) {
201 $field_def[
'extra'] = isset($field_def[
'extra']) ? $field_def[
'extra'] .
" AUTO_INCREMENT" :
"AUTO_INCREMENT";
204 if (isset($field_def[
'extra'])) {
205 $extra = $field_def[
'extra'];
209 $create_lines[] =
"`$field` " . $field_def[
'type'] . $size .
' ' . $not_null .
' ' . $extra;
211 $create_sql.= join(
',', $create_lines);
212 $last_lines = array();
213 if (count($primary)) {
214 $last_lines[] =
'PRIMARY KEY(' . join(
",", $primary) .
')';
217 $last_lines[] = join(
',', $index);
219 if (count($unique_index)) {
220 $last_lines[] = join(
',', $unique_index);
222 if (count($last_lines)) {
223 $create_sql.=
',' . join(
',', $last_lines) .
')';
225 return $this->
query($create_sql);
247 $describe = $this->
fetch_all(
"DESCRIBE `$table`");
249 $describe = $this->
fetch_all(
"DESCRIBE `$schema`.`$table`");
251 $final_describe = array();
252 foreach ($describe as $key => $value) {
253 $final_describe[] = array(
254 "Field" => $value[
"field"],
255 "Type" => $value[
"type"],
256 "Null" => $value[
"null"],
257 "Key" => $value[
"key"]
260 return $final_describe;