mysqli与pdo防sql注入源码

本文详细介绍如何使用mysqli和PDO两种方式预防SQL注入攻击,通过预处理语句和参数绑定确保数据库查询的安全,适用于PHP开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.mysqli防注入

<?php
	//定义配置文件
    $config = [
    	//地址
        "host" => "127.0.0.1",
        //数据库名称
        "dbname" => "xxxx",
        //用户名
        "user" => "xxxx",
        //密码
        "pass" => "xxx"
    ];
    //连接数据库
    $link = mysqli_connect($config["host"],$config["user"],$config["pass"],$config["dbname"]);
    //获取用户id    使用intval防注入  $user_id = intval($_GET["id"]);
    $user_id = $_GET["id"];
    $user_name = $_GET["name"];
    //写sql语句
    $sql = "select * from p_users where user_id=? and user_name=?";
    echo "<br>".var_dump($sql);
    //预处理
    $stmt = mysqli_prepare($link,$sql);
    //绑定函数  这里的ss为 后面第一个参数为字符串 第二个参数也为字符串
    mysqli_stmt_bind_param($stmt,"ss",$user_id,$user_name);
    //执行
    mysqli_stmt_execute($stmt);
    //获取结果
    $res = mysqli_stmt_get_result($stmt);
    //结果转换为二维数组
    $res = mysqli_fetch_all($res,1);
    echo "<pre>";print_r($res); echo "<pre>";

2、PDO防注入

<?php
	//配置文件
    $config = [
    	//地址
        "host" => "127.0.0.1",
        //数据库名称
        "dbname" => "xxx",
        //用户名
        "user" => "xxx",
        //密码
        "pass" => "xxx"
    ];
    //连接数据库
    $dbh = new PDO("mysql:host={$config['host']};dbname={$config['dbname']}",$config['user'],$config['pass']);
    //获取用户id    使用intval防注入  $user_id = intval($_GET["id"]);
    $user_id = $_GET["id"];
    $user_name = $_GET["name"];
    //写sql语句
    $sql = "select * from p_users where user_id=:id and user_name=:name";
    echo "<br>".var_dump($sql);
    //预处理
    $stmt = $dbh->prepare($sql);
    //绑定函数
    $stmt->bindParam(":id",$user_id);
    $stmt->bindParam(":name",$user_name);
    //执行
    $stmt->execute();
    //结果转换为二维数组
    $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo "<pre>";print_r($res); echo "<pre>";

常用的注入 or 1=1–

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值