哎,身为一个穷逼,以前自学在网上找的好几年前的视频,学的mysql,可惜现在已经不适用了,现在更新一下基础知识,本节介绍一个同mysqli中的面向对象和面向过程以及PDO预处理的格式,下一节做一下后台数据显示页面以便复习一下知识点,ok,就这样,至于概念什么的,请自行百度

mysqli预处理

<?php
$servername   = '127.0.0.1';
$username     = 'root';
$password     = 'weicunbin123';
$dbname       = 'testguest';// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);// 检测连接
if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
}
$conn->set_charset( "utf8" ); // 设置字符集// 预处理语句,每刷新一次数据库sql语句执行一次// 增
// 给数据库准备预处理语句,(sql语句,原本需要的文字用 ‘?’ 表示)
$stmt = $conn->prepare("INSERT INTO tg_message (tg_touser,tg_centent) VALUES (? , ?)");
//绑定参数,第一个为类型,其他的与? 一一对应
$stmt->bind_param("ss", $param1,$param2);
/** bind_param第一个参数* i  整型integer* d  双精度浮点型double* s  字符串string* b  是一个blob和将发送数据包
*/
// 设置参数并执行
$param1 = 'value1';
$param2 = 'value2';
// 执行
$stmt->execute();
echo "增:最后ID:".$stmt->insert_id."<br>";
echo "增:影响行数:".$stmt->affected_rows."<br>";// 删
$stmt = $conn -> prepare("DELETE FROM tg_message WHERE tg_id = ?");
$stmt -> bind_param('i', $param);
$param = 1;
$stmt -> execute();
echo "删:影响行数:".$stmt->affected_rows."<br>";// 改
$stmt = $conn -> prepare("UPDATE tg_message SET tg_touser = ? WHERE tg_id =  ?");
$stmt -> bind_param('si', $centent,$id);
$centent = '这是修改后的文字';
$id = 9;
$stmt -> execute();
echo "改:影响行数:".$stmt->affected_rows."<br>";// 查
$stmt = $conn -> prepare("SELECT tg_id,tg_touser FROM  tg_message WHERE tg_id > ?");
$stmt -> bind_param('i',$num);
$num = 15;
$stmt -> execute();
echo "查:记录总数:".$stmt->num_rows;
// 显示搜索到的结果
$stmt -> bind_result ( $tg_id,$tg_touser );//这里参数跟你查询的字段显示个数需要对应起来!
while ( $stmt -> fetch ()) {echo $tg_id .'=>'. $tg_touser .'<br>';
}
// 销毁结果集
$stmt->free_result();$stmt->close();
$conn->close();
?>

PDO预处理

<?php
/** @Descripttion: * @version: * @Author: wei* @Date: 2020-04-05 12:23:50* @LastEditors: wei* @LastEditTime: 2020-04-05 14:35:00*/
$dbms='mysql';                //数据库类型
$host='localhost';            //数据库主机名
$dbName='testguest';          //使用的数据库
$user='root';                 //数据库连接用户名
$pass='weicunbin123';         //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";// 连接数据库
try { $pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象echo "连接成功<br/>";
} catch (PDOException $e) {die ("Error!: " . $e->getMessage() . "<br/>");
}$pdo->exec("set names utf8"); //设置字符集// PDO 增,用几种方式实现,其余的可以借鉴一下添加操作
1.1
$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( :touser,:fromuser)");
$stmt->bindParam(":touser", $param1, PDO::PARAM_STR);       //第三个参数不加也没有影响
$stmt->bindParam(":fromuser", $param2);
$param1 = 'touser';
$param2 = 'fromuser';
$stmt->execute();
echo  "增:影响行数:".$stmt->rowCount();//影响行数
echo  "增:最后ID:".$pdo->lastInsertId();//自增id
echo '<br>';//1.2
$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( :touser,:fromuser)");
$stmt->execute(array(':touser' => 'a',':fromuser'=>'b')
);
echo  "增:影响行数:".$stmt->rowCount();//影响行数
echo  "增:最后ID:".$pdo->lastInsertId();//自增id
echo '<br>';//2.1
$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( ? , ?)");
$stmt->bindParam(1, $param1);
$stmt->bindParam(2, $param2);
$param1 = 1;
$param2 = 'fromuser';
$stmt->execute();
echo  "增:影响行数:".$stmt->rowCount();//影响行数
echo  "增:最后ID:".$pdo->lastInsertId();//自增id
echo '<br>';//2.2
$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( ? , ?)");
$stmt->execute(array('touser','fromuser')
);
echo  "增:影响行数:".$stmt->rowCount();//影响行数
echo  "增:最后ID:".$pdo->lastInsertId();//自增id
echo '<br>';// 3,批量添加
echo  "批量添加";
$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( ? , ?)");
$arr = array(array('1','1'),array('2','2')
);
foreach ($arr as $val) {$stmt->execute( $val );       echo '<br>';echo  "增:影响行数:".$stmt->rowCount();//影响行数echo  "增:最后ID:".$pdo->lastInsertId();//自增id
}// PDO 删
$stmt = $pdo -> prepare("DELETE FROM tg_message WHERE tg_id = ?");
$stmt->execute(array(30));
echo  "删:影响行数:".$stmt->rowCount();//影响行数
echo '<br>';// PDO 改
$stmt = $pdo -> prepare("UPDATE tg_message SET tg_touser = ? WHERE tg_id =  ?");
$stmt->execute(array('newname','2'));
echo  "改:影响行数:".$stmt->rowCount();//影响行数
echo '<br>';// PDO 查
$stmt = $pdo -> prepare("SELECT tg_id,tg_touser FROM  tg_message WHERE tg_id > ?");
$stmt->execute(array(6));
echo  "查:影响行数:".$stmt->rowCount();//影响行数
echo '<br>';echo '显示搜索到的结果:';
while($result=$stmt->fetch(PDO::FETCH_ASSOC)){var_dump($result);echo '<br>';
}?>
使用mysqli和PDO实现预处理过程中 参数相同和不同,实现相同功能的对比

相同:

  • 准备预处理语句相同 => 都是数据库对象 -> prepare
    $pdo->prepare
    $conn->prepare

不同:
设置字符集
   mysqli
       $conn->set_charset( “utf8” ); // 设置字符集
   PDO
        $pdo->exec(“set names utf8”); //设置字符集

绑定参数写法不同用法不同,这里只介绍写法
   mysqli
        $stmt->bind_param(“ss”, param1,param1,param1,param2);
   PDO
       $stmt->bindParam(":touser", $param1, PDO::PARAM_STR); //第三个参数不加也没有影响

获得影响行数有所不同
    mysqli
        stmt−>affectedrowsstmt - > affected_rows        stmt−>affectedr​ows    stmt - > num_rows
    PDO
        $stmt - > rowCount();//增删改查都使用这一个就行,注意有括号

获得 最后插入行的ID或序列值 不同
    mysqli
        $stmt->insert_id
    PDO
        $pdo->lastInsertId()

php之预处理(msqli和PDO)相关推荐

  1. php pdo 预处理删除,PHP PDO扩展整理,包括环境配置\基本增删改查\事务\预处理

    介绍 PDO是一种PHP程序连接数据库的接口,通过PDO可以将PHP程序与数据库联系起来. 优点: 1.可移植性,可以支持各种主流数据库服务,而且实现代码几乎都是相同的,使用PDO在代码层面上不需要太 ...

  2. php pdo mysql 预处理_php -- PDO预处理

    可以使用多种方式实现预处理:指的是在绑定数据进行执行的时候,可以有多种方式. 预处理语句中为变量 使用数组指定预处理变量 1.准备预处理语句(发送给服务器,让服务器准备预处理语句) PDOStatem ...

  3. PHP - PDO 之 mysql 基础操作

    PHP - PDO 之 mysql 基础操作 <?php/* pdo 学习 */$dsn = 'mysql:host=localhost;dbname=cswl';//构建连接dsn$db = ...

  4. php大量数据库抽象,PHP系列(十二)数据库抽象层pdo

    PHP系列(十二)数据库抽象层pdo 发布时间:2020-06-01 10:07:54 来源:51CTO 阅读:503 作者:sswqzx 1.数据库抽象层pdo (1).PDO(php data o ...

  5. php pdo 方法,PHP之pdo操作数据库

    PDO概述 1.PDO简介 PDO是PHP数据对象(PHP Data Object)的缩写. PDO扩展为PHP访问不同数据库定义了一个轻量级的.一致性的接口: PDO作用是统一各种数据库的访问接口, ...

  6. 从PDO下的SQL注入思路到获得GIT 3000star项目0day

    0x01 PDO简介 PDO全名PHP Data Object PDO扩展为PHP访问数据库定义了一个轻量级的一致接口.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以使用相同的函 ...

  7. php where 优先,php – 使用WHERE选择所有内容

    我目前正在开发一个存在多个访问权限的 PHP项目.逻辑很简单: – 当您的访问级别为2时,您只能看到自己项目的列表 – 当您的访问级别为3时,您可以看到所有项目 所以在SQL中: 第一: SELECT ...

  8. DVWA学习(一)SQL Injection

    本文参考自https://www.jianshu.com/u/9dac23b54fba,根据自己的学习进度可能会有不同的地方,详细可以查看原文链接. SQL Injection,即SQL注入,是指攻击 ...

  9. 【安全漏洞】ThinkPHP 3.2.3 漏洞复现

    $this->show 造成命令执行 在 Home\Controller\IndexController 下的index中传入了一个可控参数,跟进调试看一下. class IndexContro ...

  10. scaner从外网到内网域渗透笔记

    scaner 从外网到内网域渗透 1.环境配置 1.1靶场信息 用到的虚拟机共有三个 分别是 12server-db .12-dc .web1 12server-db.web1 这两个可以使用桥接或者 ...

最新文章

  1. 05-自己创建mapmodel自定义迁移方式
  2. 频频转型的蘑菇街,能讲好直播这个“老故事”吗?
  3. 杭州师范大学c语言程序设计机试,2016年杭州师范大学杭州国际服务工程学院程序设计基础考研复试题库...
  4. 推荐一款配有强大数据管理和可视化ETL的BI工具
  5. C语言程序设计精要,C语言程序设计精要.doc
  6. 评判云服务靠谱程度 -- Coding 安全那些事
  7. 慎重选择博士后(或博士生)导师
  8. virt viewer Usbredir USB重定向
  9. 17110102_Windows系统下WebLogicServer12cR2安装详解
  10. Mark一下,以提醒自己
  11. JavaScript中的作用域及作用域链
  12. 贵金属白银与美元的关系
  13. [Luogu P2597] [BZOJ 2815] [ZJOI2012]灾难
  14. 【网络通信】学生成绩管理系统(基于JSP/MySQL环境搭建)
  15. CAD看图软件怎么快速进行对图纸的打印?
  16. IE 浏览器中不能使remove删除节点的解决方法
  17. UnityShader---SurfaceShader(模板和各种效果实现:边缘自发光、火焰流动、燃烧、法线扭曲、简单模糊、消融、区域过度、雪效果等)---17
  18. Linux 命令 —— tree
  19. float浮点数理解
  20. python 文件读写w r a w+ r+ a+ rb wb ab总结

热门文章

  1. (第六周)团队项目6
  2. php常量的声明和使用
  3. Office Tip(1) : Split the Screen
  4. 常用oracle语句
  5. android sqlite 保存图片,android-如何将图像在Sqlite数据库中另存为blob?
  6. 拓端tecdat|R语言中的风险价值模型度量指标TVaR与VaR
  7. 拓端tecdat|R语言中多分类问题 multicalss classification 的性能测量
  8. 图像处理-与,或等运算
  9. Linux下开启关闭查看软件包信息
  10. Cross-validation 交叉验证