大连码头到大连北站:31:PHP(Mysqli和PDO)预处理

连码四七靠三活猜生肖 www.dvwa8.cn PHP预处理主要是用来防SQL注入的,开发程序的都明白这样一个道理,不能相信用户的任何输入,如果用户输入问题你没有做相应的安全,那么:你的程序是很危险的,很容易被攻击的!预处理:博主只分析两个:mysqli和PDO,因为这两个是PHP开发者用得比较多的;

 

 

php mysqi pdo预处理

 

一、Mysqli预处理防SQL注入

博主讲解了mysqli预处理的全部,包含增、删、改、查的预处理,不过:一般用不上这么多。主要是插入数据做好预处理即可!其它的是否做预处理要根据你的场景来;

  1. <?php
  2. $serveraddress='localhost';??//服务器地址
  3. $user='root';??//用户名
  4. $password='root';?//密码
  5. $database='fujieace';?//数据库
  6. $mysqli??=?new??mysqli?(?$serveraddress?,??$user?,??$password?,??$database?);
  7. if?(?mysqli_connect_errno?())?{
  8. ????printf?(?"Connect?failed:?%s\n"?,??mysqli_connect_error?());
  9. ????exit();
  10. }
  11. $mysqli->set_charset(?"utf8"?);?//?设置字符集
  12. $catname='连码四七靠三活猜生肖 www.dvwa8.cn';
  13. $parentid=12;
  14. //mysqli插入
  15. $sql='insert?into?cat?(cat_name,parent_id)?values(?,?)';
  16. $stmt=$mysqli->prepare($sql);
  17. $stmt->bind_param('si',$catname,$parentid?);
  18. /*
  19. i??整型integer
  20. d??双精度浮点型double
  21. s??字符串string
  22. b??是一个blob和将发送数据包
  23. */
  24. $stmt->execute();
  25. if($id=$stmt->insert_id){
  26. ????echo?$id;?//得到插入返回的ID
  27. }
  28. $catname='https://www.dvwa8.cn';
  29. $catid=66;
  30. //mysqli修改
  31. $sql='update?cat?set?cat_name=??where?cat_id=?';
  32. $stmt=$mysqli->prepare($sql);
  33. $stmt->bind_param('si',$catname,$catid?);
  34. if($stmt->execute()){
  35. ????echo?'修改成功!';
  36. }
  37. $catid=68;
  38. //mysqli删除
  39. $sql='delete?from?cat?where?cat_id=?';
  40. $stmt=$mysqli->prepare($sql);
  41. $stmt->bind_param('i',$catid?);
  42. if($stmt->execute()){
  43. ????echo?'删除成功??!';
  44. }
  45. $catid=10;
  46. //mysqli查询多行
  47. $sql='select?cat_name,parent_id?from?cat?where?cat_id<?';
  48. $stmt=$mysqli->prepare($sql);
  49. $stmt->bind_param('i',$catid?);
  50. $stmt->execute();
  51. $stmt?->?bind_result?(?$name?,??$code?);//这里参数跟你查询的字段显示个数需要对应起来!
  52. while?(?$stmt?->?fetch?())?{
  53. ????echo?$name.'=>'.$code;
  54. }
  55. $catid=12;
  56. //mysqli查询一行
  57. $sql='select?cat_name,parent_id?from?cat?where?cat_id=?';
  58. $stmt=$mysqli->prepare($sql);
  59. $stmt->bind_param('i',$catid?);
  60. $stmt->execute();
  61. $stmt?->?bind_result?(?$name?,??$code?);
  62. while?(?$stmt?->?fetch?())?{
  63. ????echo?$name.'=>'.$code;
  64. }

 

二、PDO预处理防SQL注入

PDO面向对象函数有很多,都可以综合运用的,以下是博客有了不同函数实现的效果,一定要明白函数的原理,有很多函数它的作用其实是一样的;你只需要记住几个步骤:

1:连接数据库

2:设置字符集

3:准备SQL语句

4:替换SQL语句

5:发送SQL语句

6:得到SQL结果,可以是值,可以是布尔型,也可以是对象,数组等;

同样,PDO博主也做了它的增、删、改、查,虽然说并不是完全有必要,但是总会有一些项目,它的这些都需要做预处理的;记?。河涝恫灰嘈庞没У娜魏问淙?!

  1. <?php
  2. $dsn??=??'mysql:dbname=fujieace;host=localhost'?;//数据库类型,数据库,主机名
  3. $user??=??'root'?;//用户名
  4. $password??=??'root'?;?//密码
  5. $conn??=?new??PDO?(?$dsn?,??$user?,??$password?);
  6. $conn->exec("set?names?utf8");?//设置字符集
  7. $catname='连码四七靠三活猜生肖 www.dvwa8.cn';
  8. $parentid=66;
  9. $sql='insert?into?cat?(cat_name,parent_id)?values(:catname,:parentid)';
  10. //PDO插入方法一
  11. $sth=$conn->prepare($sql,array(?PDO?::?ATTR_CURSOR??=>??PDO?::?CURSOR_FWDONLY));
  12. $sth->execute(array(':catname'=>$catname,':parentid'=>$parentid));
  13. if($id=$conn->lastInsertId()){
  14. ????echo?$id;?//得到插入返回的ID
  15. }
  16. //PDO插入方法二
  17. $sth=$conn->prepare($sql);
  18. $sth?->?bindParam?(?':catname'?,??$catname?,??PDO?::?PARAM_STR?);
  19. $sth?->?bindParam?(?':parentid'?,?$parentid?,??PDO?::?PARAM_INT?,??12?);//参数标识,绑定的变量名,参数类型(选填),数据类型长度(选填)
  20. $sth?->?execute?();
  21. if($id=$conn->lastInsertId()){
  22. ????echo?$id;?//得到插入返回的ID
  23. }
  24. $catname='付杰';
  25. $catid=88;
  26. //PDO修改
  27. $sql='update?cat?set?cat_name=??where?cat_id=?';
  28. $sth=$conn->prepare($sql);
  29. $sth->bindParam(1,?$catname);
  30. $sth->bindParam(2,$catid);
  31. if($sth->execute()){
  32. ????echo?'修改成功!';
  33. }
  34. $catid=91;
  35. //PDO删除
  36. $sql='delete?from?cat?where?cat_id=:catid';
  37. $sth=$conn->prepare($sql);
  38. $sth->bindValue(':catid',$catid,PDO::PARAM_INT);
  39. if($sth->execute()){
  40. ????echo?'删除成功!';
  41. }
  42. $catid=10;
  43. //PDO查询多行
  44. $sql='select?cat_name,parent_id?from?cat?where?cat_id<?';
  45. $sth=$conn->prepare($sql);
  46. $sth->bindParam(1,$catid);
  47. $sth->execute();
  48. $result=$sth->fetchAll();
  49. //var_dump($result);
  50. foreach?($result?as?$k?=>?$v){
  51. ????echo?$v['cat_name'].'=>'.$v['parent_id'];
  52. }
  53. $catid=12;
  54. //PDO查询一行
  55. $sql='select?cat_name,parent_id?from?cat?where?cat_id=:catid';
  56. $sth=$conn->prepare($sql);
  57. $sth->bindParam(':catid',$catid);
  58. $sth->execute();
  59. $result=$sth->fetch(PDO::FETCH_ASSOC);
  60. var_dump($result);
  61. /*
  62. ?FETCH_ASSOC、FETCH_BOTH、FETCH_BOUND、FETCH_CLASS、FETCH_COLUMN、FETCH_FUNC、GROUP、INTO、KEY_PAIR、LAZY、NAMED、NUM、OBJ、ORI_ABS......
  63. ?*/
    A+
发布日期:2017年01月06日  所属分类:PHP教程
最后修改时间:2017-04-20 20:35
评分: (1 票;平均数5.00 ;最高评分 5 ;用户总数1;总得分 5;百分比100.00)
付杰
wordpress discux dedecms 帝国 phpcms等快速建站服务
wordpress discux dedecms 帝国 phpcms等快速建站服务
  • ¥ 99.9元
  • 市场价:499.9元
wordpress站群服务 泛解析二级域名站群 二级目录站群
wordpress站群服务 泛解析二级域名站群 二级目录站群
  • ¥ 1999.9元
  • 市场价:4800元
PHP运行环境 Wamp Lamp Lnmp 安装、配置、搭建服务
PHP运行环境 Wamp Lamp Lnmp 安装、配置、搭建服务
  • ¥ 9.9元
  • 市场价:49.9元
永久免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
永久免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
  • ¥ 199.9元
  • 市场价:20000元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

 

目前评论:4   其中:访客  4   博主  0

  1. php-admin 1

    mysqli 还可以远程连接数据库的!

  2. 代码改变世界 2

    我现在PDO用得最多,因为很多项目都是团队开发,为了兼容不用PDO不行??!

  3. 太阳花 0

    杰哥最帅

  4. 天空一声巨响 2

    mysqli 和 pdo真的是很实用!受教了!