PHP中使用PDO的预处理功能避免SQL注入

不使用预处理功能

<?php
$id = $_GET['id'];
$dsn = 'mysql:host=localhost;port=3306;dbname=database';
try {
    $pdo = new PDO($dsn, $user, $pass);
    $sql = 'SELECT * FROM table where id = ' . $id;
    $stmt = $pdo->query($sql);
    $data = $stmt->fetchALL(PDO::FETCH_ASSOC);
    var_dump($data);
    $stmt->closeCursor();
} catch (PDOException $e) {
    var_dump($e->getMessage());
}

使用匿名占位符预处理

<?php
$id = $_GET['id'];
$dsn = 'mysql:host=localhost;port=3306;dbname=database';
try {
    $pdo = new PDO($dsn, 'user', 'pass');
    $sql = 'SELECT * FROM table where id = ?';
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$id]);
    $data = $stmt->fetchALL(PDO::FETCH_ASSOC);
    var_dump($data);
    $stmt->closeCursor();
} catch (PDOException $e) {
    var_dump($e->getMessage());
}

使用命名占位符预处理

<?php
$id = $_GET['id'];
$dsn = 'mysql:host=localhost;port=3306;dbname=database';
try {
    $pdo = new PDO($dsn, 'user', 'pass');
    $sql = 'SELECT * FROM table where id = :id';
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':id', $id);
    $stmt->execute();
    $data = $stmt->fetchALL(PDO::FETCH_ASSOC);
    var_dump($data);
    $stmt->closeCursor();
} catch (PDOException $e) {
    var_dump($e->getMessage());
}
<?php
$foo = $_GET['foo'];
$bar = $_GET['bar'];
$dsn = 'mysql:host=localhost;port=3306;dbname=database';
try {
    $pdo = new PDO($dsn, 'user', 'pass');
    $sql = 'UPDATE table set column_foo = ? where column_bar = ?';
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(1, $foo);
    $stmt->bindParam(2, $bar);
    $stmt->execute();
    $data = $stmt->rowCount();
    var_dump($data);
    $stmt->closeCursor();
} catch (PDOException $e) {
    var_dump($e->getMessage());
}

转载于:https://www.cnblogs.com/zhuxiaoxi/p/10890131.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值