PHP实现连接数据库4

本文介绍了使用PHP进行数据库查询的实现,包括SELECT语句的构造、where、group by、order by和limit子句的使用。通过示例代码展示了如何执行查询、获取表字段以及处理用户输入的查询条件。此外,还提供了对where、group、order和limit方法的魔术方法实现。
摘要由CSDN通过智能技术生成

PHP实现连接数据库4

上次我们说到php对数据库的删除操作,接下来我们就简单的说下数据库的查询,首要一条完整的查询语句是

SELECT [字段名] from [表名] where… group… order… limit… 这是一条简单但较为完整的一条查询语句同样我们需要一个select方法代码如下

public function select(array $data){//查询数据的方法
//            select 查询
//              SELECT 字段名 FROM 表名 where...group...order...limit
//            因为传入数组的值中有时会传入一个主键所以我们要获取到主键定义一个获取主键的方法
            $this->operate="select";//定义一个字符串记录当前的操作
            $key='';//定义查询的字段值
            if($data[0]=='*'){//查看用户是否查询所有值如果时就查询所有字段因此我们要获取到这个表的所有字段名
                $this->field();//调用field方法获取到所有字段
                $key=$this->fields;//给key赋值
                $data=explode(",",$this->fields);//保存字段数组
            }
            else{
                foreach ($data as $k){//foreach组装需要查询的数据
                    $key=$key.",".$k;//组装需要查询的字段
                }
            }
            if(!empty($this->where)){//判断where是否为空,如果不为空则给where赋值下同
                $where=" WHERE ".$this->where;
            }
            if(!empty($this->group)){
                $group=" GROUP BY ".$this->group;
            }
            if(!empty($this->order)){
                $order=" ORDER BY ".$this->order;
            }
            if(!empty($this->limit)){
                $limit=" LIMIT ".$this->limit;
            }
            $key=ltrim($key,",");//去除左边函数
            $sql="SELECT {$key} FROM {$this->tabname}". " {$where}"." {$group}"." {$order}"." {$limit}";
            //组装sql语句这里注意where前面记得加个空格
            $this->sql=$sql;
            return $this->runsql($sql,$this->operate,$data);//$data把需要查询的字段传递给runsql调用runsql方法执行sql语句
        }

接下来我们看下field方法

private function field(){//获取该表的字段名还有主键
    $sql="DESC $this->tabname";//desc 表名
    $this->operate='desc';//记录当前操作
    $data='';
    $this->runsql($sql,$this->operate,$data);//调用runsql执行sql语句
    foreach ($this->fie as $k=>$v){//foreach获取到字段名
        if($v=='PRI'){//记录主键
            $this->key_field=$k;
        }
        $this->fields=$this->fields.$k.",";//组装字段
    }
    $this->fields=rtrim($this->fields,",");//除去多余,
}

接下来还有个where等方法,这里采用的是__call的魔术方法之前也有讲过

public function __call($funname,$args){//一个魔术方法当调用此类中不存在的方法时执行此方法可用来屏蔽错误
//            可采用这种方法来判断用户输入的where...group...order...limit...
//            $funname为该方法不存在的方法名,$args为该方法传入的参数
            if($funname=="where"){//where子句
                $this->where=$args[0]?$args[0]:'';//如果where有值得话给$where赋值如果没有赋值为空
            }
            if($funname=='group'){
                $this->group=$args[0]?$args[0]:'';
            }
            if($funname=='order'){
                $this->order=$args[0]?$args[0]:'';
            }
            if($funname=='limit'){
                $this->limit=$args[0]?$args[0]:'';
            }
            return $this;
        }

最后就只有一个runsql的方法没讲了,代码如下

private function runsql($sql,$operate,$data){//执行sql语句注意插入删除是不会有返回受影响的条数的$operate记录您当前的操作
//            $row=$this->conn->num_rows($result);//返回查询出的条数
//            print_r($data);
            $result=mysqli_query($this->conn,$sql);//执行sql语句并返回结果集或false
            if($operate=='select'){//当前执行select操作需要返回结果集
                if (mysqli_num_rows($result)>0) {
                    // 输出数据
                    while($row = mysqli_fetch_assoc($result)) {//遍历需要查询的字段
                        echo "<tr>";
                        foreach ($data as $k=>$v) {
                            echo "<td>$row[$v]</td>";
                        }
                        echo "<td><button class='del'>删除</button></td></tr><br>";
                    }
                } else {
                    echo "0 结果";
                }
            }
        }

那么现在就让我们来尝试下查询的操作

<?php
    include 'daconfig.php';//引入配置文件
    include 'MySQL.php';//映入mysql文件
    $mysql=new model();//new一个对象
    $mysql->construct("student");//传递表名
//    //传入数组显示查询的内容
    $arr=array('sid','sname','sclass','ssex','ssubject','sdept','sphon','sbirth','identity_no');
    //需要查询的字段
    $a="sid!='1610519053'";//where条件
    $mysql->where($a);
    $b="sclass";//分组条件
    $mysql->group($b);//按照班级分组
    $mysql->order('sid');//按照学号分组
    $mysql->limit('5');//显示条数
    $mysql->select($arr);//查询
?>

OK啦!!!


逐梦版权所有丨如未注明 , 均为原创丨本网站采用 BY-NC-SA协议进行授权
转载请注明原文链接: PHP实现连接数据库4
喜欢 (0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

患孤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值