add.sql.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. defined('IN_ADMIN') or exit('No permission resources.');
  3. $defaultvalue = isset($_POST['setting']['defaultvalue']) ? $_POST['setting']['defaultvalue'] : '';
  4. //正整数 UNSIGNED && SIGNED
  5. $minnumber = isset($_POST['setting']['minnumber']) ? $_POST['setting']['minnumber'] : 1;
  6. $decimaldigits = isset($_POST['setting']['decimaldigits']) ? $_POST['setting']['decimaldigits'] : '';
  7. switch($field_type) {
  8. case 'varchar':
  9. if(!$maxlength) $maxlength = 255;
  10. $maxlength = min($maxlength, 255);
  11. $sql = "ALTER TABLE `$tablename` ADD `$field` VARCHAR( $maxlength ) NOT NULL DEFAULT '$defaultvalue'";
  12. if (!$unrunsql) $this->db->query($sql);
  13. break;
  14. case 'tinyint':
  15. if(!$maxlength) $maxlength = 3;
  16. $minnumber = intval($minnumber);
  17. $defaultvalue = intval($defaultvalue);
  18. $sql = "ALTER TABLE `$tablename` ADD `$field` TINYINT( $maxlength ) ".($minnumber >= 0 ? 'UNSIGNED' : '')." NOT NULL DEFAULT '$defaultvalue'";
  19. if (!$unrunsql) $this->db->query($sql);
  20. break;
  21. case 'number':
  22. $minnumber = intval($minnumber);
  23. $defaultvalue = $decimaldigits == 0 ? intval($defaultvalue) : floatval($defaultvalue);
  24. $sql = "ALTER TABLE `$tablename` ADD `$field` ".($decimaldigits == 0 ? 'INT' : 'FLOAT')." ".($minnumber >= 0 ? 'UNSIGNED' : '')." NOT NULL DEFAULT '$defaultvalue'";
  25. if (!$unrunsql) $this->db->query($sql);
  26. break;
  27. case 'smallint':
  28. $minnumber = intval($minnumber);
  29. $sql = "ALTER TABLE `$tablename` ADD `$field` SMALLINT ".($minnumber >= 0 ? 'UNSIGNED' : '')." NOT NULL";
  30. if (!$unrunsql) $this->db->query($sql);
  31. break;
  32. case 'int':
  33. $minnumber = intval($minnumber);
  34. $defaultvalue = intval($defaultvalue);
  35. $sql = "ALTER TABLE `$tablename` ADD `$field` INT ".($minnumber >= 0 ? 'UNSIGNED' : '')." NOT NULL DEFAULT '$defaultvalue'";
  36. if (!$unrunsql) $this->db->query($sql);
  37. break;
  38. case 'mediumint':
  39. $minnumber = intval($minnumber);
  40. $defaultvalue = intval($defaultvalue);
  41. $sql = "ALTER TABLE `$tablename` ADD `$field` INT ".($minnumber >= 0 ? 'UNSIGNED' : '')." NOT NULL DEFAULT '$defaultvalue'";
  42. if (!$unrunsql) $this->db->query($sql);
  43. break;
  44. case 'mediumtext':
  45. $sql = "ALTER TABLE `$tablename` ADD `$field` MEDIUMTEXT NOT NULL";
  46. if (!$unrunsql) $this->db->query($sql);
  47. break;
  48. case 'text':
  49. $sql = "ALTER TABLE `$tablename` ADD `$field` TEXT NOT NULL";
  50. if (!$unrunsql) $this->db->query($sql);
  51. break;
  52. case 'date':
  53. $sql = "ALTER TABLE `$tablename` ADD `$field` DATE NULL";
  54. if (!$unrunsql) $this->db->query($sql);
  55. break;
  56. case 'datetime':
  57. $sql = "ALTER TABLE `$tablename` ADD `$field` DATETIME NULL";
  58. if (!$unrunsql) $this->db->query($sql);
  59. break;
  60. case 'timestamp':
  61. $sql = "ALTER TABLE `$tablename` ADD `$field` TIMESTAMP NOT NULL";
  62. if (!$unrunsql) $this->db->query($sql);
  63. break;
  64. //特殊自定义字段
  65. case 'pages':
  66. $this->db->query("ALTER TABLE `$tablename` ADD `paginationtype` TINYINT( 1 ) NOT NULL DEFAULT '0'");
  67. $this->db->query("ALTER TABLE `$tablename` ADD `maxcharperpage` MEDIUMINT( 6 ) NOT NULL DEFAULT '0'");
  68. break;
  69. case 'readpoint':
  70. $defaultvalue = intval($defaultvalue);
  71. $this->db->query("ALTER TABLE `$tablename` ADD `readpoint` smallint(5) unsigned NOT NULL default '$defaultvalue'");
  72. $this->db->query("ALTER TABLE `$tablename` ADD `paytype` tinyint(1) unsigned NOT NULL default '0'");
  73. break;
  74. }
  75. ?>