天天看点

ThinkPHP 数据库表结构处理类(简单实用)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

<code>&lt;?php</code>

<code>/*</code>

<code> </code><code>* mysql表结构处理类</code>

<code> </code><code>* 创建数据表,增加,编辑,删除表中字段</code>

<code> </code><code>*</code>

<code> </code><code>*/</code>

<code>class</code> <code>MysqlManage{</code>

<code>    </code><code>/*</code>

<code>     </code><code>* 创建数据库,并且主键是aid</code>

<code>     </code><code>* table 要查询的表名</code>

<code>     </code><code>*/</code>

<code>    </code><code>function</code> <code>createTable(</code><code>$table</code><code>){</code>

<code>        </code><code>$sql</code><code>=</code><code>"CREATE TABLE IF NOT EXISTS `$table` (`aid` INT NOT NULL primary key)ENGINE = InnoDB;"</code><code>;</code>

<code>        </code><code>M()-&gt;execute(</code><code>$sql</code><code>);</code>

<code>        </code><code>$this</code><code>-&gt;checkTable(</code><code>$table</code><code>);</code>

<code>    </code><code>}</code>

<code>     </code><code>* 检测表是否存在,也可以获取表中所有字段的信息</code>

<code>     </code><code>* return 表里所有字段的信息</code>

<code>    </code><code>function</code> <code>checkTable(</code><code>$table</code><code>){</code>

<code>        </code><code>$sql</code><code>=</code><code>"desc `$table`"</code><code>;</code>

<code>        </code><code>$info</code><code>=M()-&gt;execute(</code><code>$sql</code><code>);</code>

<code>        </code><code>return</code> <code>$info</code><code>;</code>

<code>     </code><code>* 检测字段是否存在,也可以获取字段信息(只能是一个字段)</code>

<code>     </code><code>* table 表名</code>

<code>     </code><code>* field 字段名</code>

<code>    </code><code>function</code> <code>checkField(</code><code>$table</code><code>,</code><code>$field</code><code>){</code>

<code>        </code><code>$sql</code><code>=</code><code>'desc `$table` $field'</code><code>;</code>

<code>     </code><code>* 添加字段</code>

<code>     </code><code>* info  字段信息数组 array</code>

<code>     </code><code>* return 字段信息 array</code>

<code>    </code><code>function</code> <code>addField(</code><code>$table</code><code>,</code><code>$info</code><code>){</code>

<code>        </code><code>$sql</code><code>=</code><code>"alter table `$table` add "</code><code>;</code>

<code>        </code><code>$sql</code><code>.=</code><code>$this</code><code>-&gt;filterFieldInfo();</code>

<code>        </code><code>$this</code><code>-&gt;checkField(</code><code>$table</code><code>,</code><code>$info</code><code>[</code><code>'name'</code><code>]);</code>

<code>     </code><code>* 修改字段</code>

<code>     </code><code>* 不能修改字段名称,只能修改</code>

<code>    </code><code>function</code> <code>editField(</code><code>$table</code><code>,</code><code>$info</code><code>){</code>

<code>        </code><code>$sql</code><code>=</code><code>"alter table `$table` modify "</code><code>;</code>

<code>        </code><code>$sql</code><code>.=</code><code>$this</code><code>-&gt;filterFieldInfo(</code><code>$info</code><code>);</code>

<code>     </code><code>* 字段信息数组处理,供添加更新字段时候使用</code>

<code>     </code><code>* info[name]   字段名称</code>

<code>     </code><code>* info[type]   字段类型</code>

<code>     </code><code>* info[length]  字段长度</code>

<code>     </code><code>* info[isNull]  是否为空</code>

<code>     </code><code>* info['default']   字段默认值</code>

<code>     </code><code>* info['comment']   字段备注</code>

<code>    </code><code>private</code> <code>function</code> <code>filterFieldInfo(</code><code>$info</code><code>){</code>

<code>        </code><code>if</code><code>(!</code><code>is_array</code><code>(</code><code>$info</code><code>))</code>

<code>            </code><code>return</code>

<code>        </code><code>$newInfo</code><code>=</code><code>array</code><code>();</code>

<code>        </code><code>$newInfo</code><code>[</code><code>'name'</code><code>]=</code><code>$info</code><code>[</code><code>'name'</code><code>];</code>

<code>        </code><code>$newInfo</code><code>[</code><code>'type'</code><code>]=</code><code>$info</code><code>[</code><code>'type'</code><code>];</code>

<code>        </code><code>switch</code><code>(</code><code>$info</code><code>[</code><code>'type'</code><code>]){</code>

<code>            </code><code>case</code> <code>'varchar'</code><code>:</code>

<code>            </code><code>case</code> <code>'char'</code><code>:</code>

<code>                </code><code>$newInfo</code><code>[</code><code>'length'</code><code>]=</code><code>empty</code><code>(</code><code>$info</code><code>[</code><code>'length'</code><code>])?100:</code><code>$info</code><code>[</code><code>'length'</code><code>];</code>

<code>                </code><code>$newInfo</code><code>[</code><code>'isNull'</code><code>]=</code><code>$info</code><code>[</code><code>'isNull'</code><code>]==1?</code><code>'NULL'</code><code>:</code><code>'NOT NULL'</code><code>;</code>

<code>                </code><code>$newInfo</code><code>[</code><code>'default'</code><code>]=</code><code>empty</code><code>(</code><code>$info</code><code>[</code><code>'default'</code><code>])?</code><code>''</code><code>:</code><code>'DEFAULT '</code><code>.</code><code>$info</code><code>[</code><code>'default'</code><code>];</code>

<code>                </code><code>$newInfo</code><code>[</code><code>'comment'</code><code>]=</code><code>empty</code><code>(</code><code>$info</code><code>[</code><code>'comment'</code><code>])?</code><code>''</code><code>:</code><code>'COMMENT '</code><code>.</code><code>$info</code><code>[</code><code>'comment'</code><code>];</code>

<code>            </code><code>case</code> <code>'int'</code><code>:</code>

<code>                </code><code>$newInfo</code><code>[</code><code>'length'</code><code>]=</code><code>empty</code><code>(</code><code>$info</code><code>[</code><code>'length'</code><code>])?7:</code><code>$info</code><code>[</code><code>'length'</code><code>];</code>

<code>            </code><code>case</code> <code>'text'</code><code>:</code>

<code>                </code><code>$newInfo</code><code>[</code><code>'length'</code><code>]=</code><code>''</code><code>;</code>

<code>                </code><code>$newInfo</code><code>[</code><code>'default'</code><code>]=</code><code>''</code><code>;</code>

<code>        </code><code>}</code>

<code>        </code><code>$sql</code><code>=</code><code>$newInfo</code><code>[</code><code>'name'</code><code>].</code><code>' '</code><code>.</code><code>$newInfo</code><code>[</code><code>'type'</code><code>];</code>

<code>        </code><code>$sql</code><code>.=(!</code><code>empty</code><code>(</code><code>$newInfo</code><code>[</code><code>'length'</code><code>]))?(</code><code>$newInfo</code><code>[</code><code>'length'</code><code>]).</code><code>" "</code><code>:</code><code>' '</code><code>;</code>

<code>        </code><code>$sql</code><code>.=</code><code>$newInfo</code><code>[</code><code>'isNull'</code><code>].</code><code>''</code><code>;</code>

<code>        </code><code>$sql</code><code>.=</code><code>$newInfo</code><code>[</code><code>'default'</code><code>];</code>

<code>        </code><code>$sql</code><code>.=</code><code>$newInfo</code><code>[</code><code>'comment'</code><code>];</code>

<code>        </code><code>return</code> <code>$sql</code><code>;</code>

<code>     </code><code>* 删除字段</code>

<code>     </code><code>* 如果返回了字段信息则说明删除失败,返回false,则为删除成功</code>

<code>    </code><code>function</code> <code>dropField(</code><code>$table</code><code>,</code><code>$field</code><code>){</code>

<code>        </code><code>$sql</code><code>=</code><code>"alter table `$table` drop column $field"</code><code>;</code>

<code>        </code><code>$this</code><code>-&gt;checkField(</code><code>$table</code><code>,</code><code>$filed</code><code>);</code>

<code>     </code><code>* 获取指定表中指定字段的信息(多字段)</code>

<code>    </code><code>function</code> <code>getFieldInfo(</code><code>$table</code><code>,</code><code>$field</code><code>){</code>

<code>        </code><code>$info</code><code>=</code><code>array</code><code>();</code>

<code>        </code><code>if</code><code>(</code><code>is_string</code><code>(</code><code>$field</code><code>)){</code>

<code>            </code><code>$this</code><code>-&gt;checkField(</code><code>$table</code><code>,</code><code>$field</code><code>);</code>

<code>        </code><code>}</code><code>else</code><code>{</code>

<code>            </code><code>foreach</code><code>(</code><code>$field</code> <code>as</code> <code>$v</code><code>){</code>

<code>                </code><code>$info</code><code>[</code><code>$v</code><code>]=</code><code>$this</code><code>-&gt;checkField(</code><code>$table</code><code>,</code><code>$v</code><code>);</code>

<code>            </code><code>}</code>

<code>}</code>

    好久没有写博客了,最近忙的要死,搞微信平台,偶尔遇到需要模型管理,前台表单直接修改表结构的,就自己简单写了一下,也不是很难,给大家一个思路,看不懂了可以联系我

本文转自 3147972 51CTO博客,原文链接:http://blog.51cto.com/a3147972/1543179,如需转载请自行联系原作者