php mysqli 增删改查CRUD操作预处理简单封装

对数据库操作做了一个简单的封装,简化调用。本人不太擅长php,学校老师面向对象都没讲解,自己随便封装了一个类,聊以胜无。实在不想在这里吐苦水,但是作为一个大学计算机学科老师连csdn都不知道,对于项目永远是撇开代码只看功能,连面向对象思想都没有,一学期上课整堂课都在讲库函数。观其年事已高,卖弄官腔,倚老卖老的架势,我也是无力怼之~~

对于这学期php的学习,我最大的收获还是自己不务正业时捣鼓着捞了勺渗透的汤喝了喝,真香啊。没想到php会让我在web渗透测试上有了小入门,算是点了个小技能点,不算是真正入门。不过也大致有所了解,也许等这几天忙完手上的事会写上一篇对这段时间web渗透测试学习的总结。

<?php
/**
 * Created by PhpStorm.
 * User: admin
 * Date: 2019-05-17
 * Time: 17:14
 */
class DBHelper
{
    private $host = "localhost";
    private $username = "root";
    private $password = "xxxxxxx";
    private $database = "phpstudy";
    private $connection;

    function __construct()
    {

    }

    private function getConnection()
    {
        return $this->connection;
    }

    private function openConnection(){
        $this->connection = new mysqli($this->host,$this->username,$this->password,$this->database);
    }

    private function closeConnection(){
        $this->connection->close();
    }
	
	// 查找
    public function select($sql,$type_str=null,$params=null){
        $this->openConnection();
        $conn = $this->getConnection();
        if ($type_str!=null || $params!=null) {
            // 构造$stmt->bind_param参数
            $stmt = $conn->prepare($sql);
            $arr = array();
            $arr[] = $type_str;
            for ($i = 0; $i < count($params);$i++) {
                $arr[] = &$params[$i];
            }
            // 回调
            call_user_func_array(array($stmt,'bind_param'), $arr);
            $stmt->execute();
            $meta = $stmt->result_metadata();
            $result_params = array();
            while ($field = $meta->fetch_field()){
                $result_params[] = &$row[$field->name];
            }
            call_user_func_array(array($stmt,'bind_result'),$result_params);
            while($stmt->fetch()){
                foreach ($row as $key=>$val){
                    $c[$key] = $val;
                }
                $result[] = $c;
            }
            $stmt->free_result();
            $this->closeConnection();
            return $result;
        }else{
            $result = $conn->query($sql);
            $rel = array();
            while ($row = $result->fetch_assoc()){
                $rel[] = $row;
            }
            $result->free_result();
            $this->closeConnection();
            return $rel;

        }
    }

	// 增、删、改操作
    public function IUDoption($sql,$type_str=null,$params=null){
        $this->openConnection();
        $conn = $this->getConnection();
        if ($type_str!=null || $params!=null) {
            $stmt = $conn->prepare($sql);
            $arr = array();
            $arr[] = $type_str;
            for ($i = 0; $i < count($params);$i++) {
                $arr[] = &$params[$i];
            }
            call_user_func_array(array($stmt,'bind_param'), $arr);
            $res = $stmt->execute();
            if ($res){
                $stmt->free_result();
                $this->closeConnection();
                return true;
            }else{
                $stmt->free_result();
                $this->closeConnection();
                return false;
            }
        }else{
            $res = $conn->query($sql);
            if ($res){
                $res->free_result();
                $this->closeConnection();
                return true;
            }else{
                $res->free_result();
                $this->closeConnection();
                return false;
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用MySQLi进行增删改查时,建议使用预处理语句来保护应用程序免受SQL注入攻击。以下是使用MySQLi预处理语句的示例: 1. 连接数据库 ```php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } ``` 2. 执行查询 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("SELECT * FROM myTable WHERE id=?"); $stmt->bind_param("i", $id); // 设置参数并执行查询 $id = 1; $stmt->execute(); // 获取结果集 $result = $stmt->get_result(); // 输出结果 while ($row = $result->fetch_assoc()) { echo "id: " . $row["id"] . " - Name: " . $row["name"] . "<br>"; } ``` 3. 执行插入 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("INSERT INTO myTable (name, email, phone) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $name, $email, $phone); // 设置参数并执行插入 $name = "John Doe"; $email = "john@example.com"; $phone = "555-555-5555"; $stmt->execute(); // 输出插入的行数 echo "New records created successfully. Rows inserted: " . mysqli_affected_rows($conn); ``` 4. 执行更新 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("UPDATE myTable SET email=?, phone=? WHERE id=?"); $stmt->bind_param("ssi", $email, $phone, $id); // 设置参数并执行更新 $id = 1; $email = "john@example.com"; $phone = "555-555-5555"; $stmt->execute(); // 输出更新的行数 echo "Records updated successfully. Rows affected: " . mysqli_affected_rows($conn); ``` 5. 执行删除 ```php // 准备SQL语句和绑定参数 $stmt = $conn->prepare("DELETE FROM myTable WHERE id=?"); $stmt->bind_param("i", $id); // 设置参数并执行删除 $id = 1; $stmt->execute(); // 输出删除的行数 echo "Records deleted successfully. Rows affected: " . mysqli_affected_rows($conn); ``` 注意:在使用预处理语句时,要注意使用正确的参数类型。在上面的示例中,“s”表示字符串类型,“i”表示整型。您可以根据需要更改参数类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值