Rumah > pembangunan bahagian belakang > tutorial php > php实现防止SQL注入的两种方法介绍(代码示例)

php实现防止SQL注入的两种方法介绍(代码示例)

不言
Lepaskan: 2023-04-04 22:52:02
ke hadapan
2841 orang telah melayarinya

本篇文章给大家带来的内容是关于php实现防止SQL注入的方法介绍(两种),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

PHP简单实现防止SQL注入的方法,结合实例形式分析了PHP防止SQL注入的常用操作技巧与注意事项,PHP源码备有详尽注释便于理解,需要的朋友可以参考下!

方法一:execute代入参数


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

$var_Value) {

    //获取POST数组最大值

    $num = $num + 1;

  }

  //下标为i的数组存储的是商品id, 下标为j数组的存储的是此商品的库存

  for($i=0;$isetAttribute(PDO::ATTR_EMULATE_PREPARES, false);

      //查询数据库中是否存在该ID的商品

      //当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据

      $stmt = $pdo->prepare("select good_id from delphi_test_content WHERE good_id = ?");

      //当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。

      $stmt->execute(array($_POST[$i]));

      //返回查询结果

      $count = $stmt->rowCount();

      //如果本地数据库存在该商品ID和库存记录,就更新该商品的库存

      if($count != 0)

      {

        $stmt = $pdo->prepare("update delphi_test_content set content = ? WHERE good_id = ?");

        $stmt->execute(array($_POST[$j], $_POST[$i]));

      }

      //如果本地数据库没有该商品ID和库存记录,就新增该条记录

      if($count == 0)

      {

        $stmt = $pdo->prepare("insert into delphi_test_content (good_id,content) values (?,?)");

        $stmt->execute(array($_POST[$i], $_POST[$j]));

      }

    }

  }

  $pdo = null;

  //关闭连接

}

?>

Salin selepas log masuk

方法二:bindParam绑定参数


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

$var_Value) {

    //获取POST数组最大值

    $num = $num + 1;

  }

  //下标为i的数组存储的是商品id, 下标为j数组的存储的是此商品的库存

  for($i=0;$iprepare("select good_id from delphi_test_content WHERE good_id = ?");

      $stmt->execute(array($_POST[$i]));

      $stmt->bindParam(1,$_POST[$i]);

      $stmt->execute();

      //返回查询结果

      $count = $stmt->rowCount();

      //如果本地数据库存在该商品ID和库存记录,就更新该商品的库存

      if($count != 0)

      {

        $stmt = $pdo->prepare("update delphi_test_content set content = ? WHERE good_id = ?");

        $stmt->execute(array($_POST[$j], $_POST[$i]));

        $stmt->bindParam(1,$_POST[$j]);

        $stmt->bindParam(2,$_POST[$i]);

        $stmt->execute();

      }

      //如果本地数据库没有该商品ID和库存记录,就新增该条记录

      if($count == 0)

      {

        $stmt = $pdo->prepare("insert into delphi_test_content (good_id,content) values (?,?)");

        $stmt->bindParam(1,$_POST[$i]);

        $stmt->bindParam(2,$_POST[$j]);

        $stmt->execute();

      }

    }

  }

  $pdo = null;

  //关闭连接

}

?>

Salin selepas log masuk

Atas ialah kandungan terperinci php实现防止SQL注入的两种方法介绍(代码示例). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan