本文操作环境:Windows7系统、PHP7.4版、DELL G3电脑
php中model的用法是什么?
PHP模型Model类封装数据库操作示例
PHP模型Model类封装数据库操作,结合实例形式分析了php使用mysqli封装的针对数据库操作相关实现与使用技巧:
具体如下:
复制代码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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<?php
//引入配置文件
include "./config.php";
class Model
{
public $link;//存储连接对象
public $tableName = "";//存储表名
public $field = "*";//存储字段
public $allFields = [];//存储当前表所有字段
public $where = "";//存储where条件
public $order = "";//存储order条件
public $limit = "";//存储limit条件
/**
* 构造方法 初始化
* @param string $tableName 要操作的表名
*/
public function __construct($tableName)
{
//1.存储操作的表名
$this->tableName = PRE.$tableName;
//2.初始化连接数据库
$this->getConnect();
//3.获得当前表的所有字段
$this->getFields();
}
/**
* 初始化连接数据库操作
*/
public function getConnect()
{
//1.连接数据库
$this->link = mysqli_connect(HOST,USER,PWD,DB,PORT);
//2.判断连接
if (mysqli_connect_errno($this->link)>0){
echo mysqli_connect_error($this->link);
exit;
}
}
/**
* 执行并发送SQL(查询)
* @param string $sql 要查询的SQL语句
* @return array 返回查询出来的二维数组
*/
public function query($sql)
{
$result = mysqli_query($this->link,$sql);
if ($result && mysqli_num_rows($result)>0) {
$arr = [];
while($row = mysqli_fetch_assoc($result)){
$arr[] = $row;
}
}
return $arr;
}
/**
* 获取当前表的所有字段
*/
public function getFields()
{
//查看表结构
$sql = "desc {$this->tableName}";
//执行并发送SQL
$result = $this->query($sql);
$fields = [];
foreach ($result as $k => $v){
$fields[] = $v['Field'];
}
$this->allFields = $fields;
}
/**
* 执行并发送SQL语句(增删改)
* @param string $sql 要执行的SQL语句
* @return bool|int|string 添加成功则返回上一次操作id,删除修改操作则返回true,失败则返回false
*/
public function exec($sql)
{
$result = mysqli_query($this->link,$sql);
//处理结果集
if ($result && mysqli_affected_rows($this->link)>0){
//判断是否为添加操作,是则返回上一次执行的id
if (mysqli_insert_id($this->link)){
return mysqli_insert_id($this->link);
}
//删除修改操作成功则返回true
return true;
}else{
//未执行成功则返回false
return false;
}
}
/**
* 查询多条数据
*/
public function select()
{
$sql = "select {$this->field} from {$this->tableName} {$this->where} {$this->order} {$this->limit}";
//执行并发送SQL
return $this->query($sql);
}
/**
* 查询一条数据
* @param string $id 要查询的id
* @return array 返回一条数据
*/
public function find($id="")
{
//判断id是否存在
if (empty($id)){
$where = $this->where;
}else{
$where = "where id={$id}";
}
$sql = "select {$this->field} from {$this->tableName} {$where} limit 1";
//执行并发送sql
$result = $this->query($sql);
//返回一条数据
return $result[0];
}
/**
* 设置要查询的字段信息
* @param string $field 要查询的字段
* @return object 返回自己,保证连贯操作
*/
public function field($field)
{
//判断字段是否存在
if (empty($field)){
return $this;
}
$this->field = $field;
return $this;
}
/**
* 统计总条数
* @return int 返回总数
*/
public function count()
{
//准备SQL语句
$sql = "select count(*) as total from {$this->tableName} limit 1";
$result = $this->query($sql);
//返回总数
return $result[0]['total'];
}
/**
* 添加操作
* @param array $data 要添加的数组
* @return bool|int|string 添加成功则返回上一次操作的id,失败则返回false
*/
public function add($data){
//判断是否是数组
if (!is_array($data)){
return $this;
}
//判断是否全是非法字段
if (empty($data)){
die("非法数据");
}
//过滤非法字段
foreach ($data as $k => $v){
if (!in_array($k,$this->allFields)){
unset($data[$k]);
}
}
//将数组中的键取出
$keys = array_keys($data);
//将数组中取出的键转为字符串拼接
$key = implode(",",$keys);
//将数组中的值转化为字符串拼接
$value = implode("','",$data);
//准备SQL语句
$sql = "insert into {$this->tableName} ({$key}) values('{$value}')";
//执行并发送SQL
return $this->exec($sql);
}
/**
* 删除操作
* @param string $id 要删除的id
* @return bool 删除成功则返回true,失败则返回false
*/
public function delete($id="")
{
//判断id是否存在
if (empty($id)){
$where = $this->where;
}else{
$where = "where id={$id}";
}
$sql = "delete from {$this->tableName} {$where}";
echo $sql;
//执行并发送
return $this->exec($sql);
}
/**
* 修改操作
* @param array $data 要修改的数组
* @return bool 修改成功返回true,失败返回false
*/
public function update($data){
//判断是否是数组
if (!is_array($data)){
return $this;
}
//判断是否是全是非法字段
if(empty($data)){
die("非法数据");
}
$str = "";
//过滤非法字段
foreach ($data as $k => $v){
if ($k == "id"){
$where = "where id={$v}";
unset($data[$k]);
}
if (in_array($k,$this->allFields)){
$str .= "{$k}='{$v}',";
}else{
unset($data[$k]);
}
}
//判断是否有条件
if (empty($this->where)){
die("请输入条件");
}
//去掉最右侧的逗号
$str = rtrim($str,",");
$sql = "update {$this->tableName} set {$str} {$this->where}";
return $this->exec($sql);
}
/**
* where条件
* @param string $where 输入的where条件
* @return $this 返回自己,保证连贯操作
*/
public function where($where)
{
$this->where = "where ".$where;
return $this;
}
/**
* order排序条件
* @param string $order 以此为基准进行排序
* @return $this 返回自己,保证连贯操作
*/
public function order($order)
{
$this->order = "order by ".$order;
return $this;
}
/**
* limit条件
* @param string $limit 输入的limit条件
* @return $this 返回自己,保证连贯操作
*/
public function limit($limit)
{
$this->limit = "limit ".$limit;
return $this;
}
/**
* 析构方法
* 关闭数据库连接
*/
public function __destruct()
{
mysqli_close($this->link);
}
}
//自行调试
$a = new Model("表名");
// var_dump($a->find(3));
// var_dump($a->select());
// var_dump($a->count());
// $res = $a->select();
//var_dump($res);
?>
登录后复制
推荐学习:《PHP视频教程》
以上就是php中model的用法是什么的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是紧张白昼最近收集整理的关于php中model的用法是什么的全部内容,更多相关php中model内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复