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><?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()->execute(</code><code>$sql</code><code>);</code>
<code> </code><code>$this</code><code>->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()->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>->filterFieldInfo();</code>
<code> </code><code>$this</code><code>->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>->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>->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>->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>->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,如需轉載請自行聯系原作者