本文实例讲述了PHP封装的数据库模型Model类。分享给大家供大家参考,具体如下:
tableName = PRE.$tableName;
//获取当前数据表中有哪些字段
$this->getFields();
}
public function getFields()
{
//查看当前表结构
$sql = "desc {$this->tableName}";
$res = $this->query($sql);//返回pdo对象
//var_dump($res);
if ($res) {
$arr = $res->fetchAll(2);
//var_dump($arr);
//从二维数组中取出指定下标的列
$this->allFields = array_column($arr,"Field");
return $this->allFields;
} else {
die("表名错误");
}
}
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}')";
$this->sql = $sql;
//执行并发送SQL,返回受影响行数
return (int)$this->exec($sql);
}
public function delete($id="")
{
//判断id是否存在
if (empty($id)) {
$where = $this->where;
}else{
$where = "where id={$id}";
}
$sql = "delete from {$this->tableName} {$where}";
$this->sql = $sql;
//执行并发送SQL,返回受影响行数
return (int)$this->exec($sql);
}
public function update($data)
{
//判断是否是数组
if (!is_array($data)){
return $this;
}
//判断是否全是非法字段
if (empty($data)) {
die('全是非法字段');
}
$str = "";
//过滤非法字段
foreach ($data as $k=>$v) {
//字段为id时,判断id是否存在的
if ($k == "id"){
$this->where = "where id={$v}";
unset($data[$k]);
continue;
}
//若字段不为id,则过滤后再拼接成set字段
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}";
//echo $sql;
$this->sql = $sql;
return (int)$this->exec($sql);
}
public function select()
{
$sql = "select {$this->field} from {$this->tableName} {$this->where} {$this->order} {$this->limit}";
$this->sql = $sql;
//执行SQL,结果集是一个对象
$res = $this->query($sql);
//判断是否查询成功,
if ($res){
//成功返回二维数组
return $res->fetchAll(2);
}
//失败返回空数组
return [];
}
public function find($id="")
{
//判断是否存在id
if (empty($id)){
$where = $this->where;
}else{
$where = "where id={$id}";
}
$sql = "select {$this->field} from {$this->tableName} {$where} {$this->order} limit 1";
$this->sql = $sql;
//执行sql,结果集为对象
$res = $this->query($sql);
//判断是否查询成功
if ($res){
//成功则返回一条数据(一维数组)
$result = $res->fetchAll(2);
return $result[0];
}
//失败返回空数组
return [];
}
public function count()
{
$sql = "select count(*) as total from {$this->tableName} {$this->where} limit 1";
$this->sql = $sql;
//执行SQL,结果集为对象
$res = $this->query($sql);
//处理结果集
if ($res){
$result = $res->fetchAll(2);
//var_dump($result);
return $result[0]["total"];
}
return 0;
}
public function field($field)
{
//判断字段是否存在
if (empty($filed)){
return $this;
}
$this->field = $field;
return $this;
}
public function _sql()
{
return $this->sql;
}
public function where($where)
{
$this->where = "where ".$where;
return $this;
}
public function order($order)
{
$this->order = "order by ".$order;
return $this;
}
public function limit($limit)
{
$this->limit = "limit ".$limit;
return $this;
}
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。



