博客列表 >425-MYSQLI之PDO预处理

425-MYSQLI之PDO预处理

小威的博客
小威的博客原创
2018年04月26日 13:38:45720浏览
  • MySQLi面向对象实现更新操作效果图:

1.png

2.png

MySQLi面向对象实现更新操作源代码:MYSQLI_STMT_UPDATE.PHP

实例

<meta charset="UTF-8">
<?php

//1.设置连接参数
$db_host = '127.0.0.1';
$db_user = 'root';
$db_pass = 'uyYYFGZxuVactZc7';
$db_name = 'wd2018';
$db_char = 'utf8';

//2.连接数据库服务器,并返回mysqli对象
$db=new mysqli($db_host,$db_user,$db_pass,$db_name);

//3.检测是否连接成功
if ($db->connect_errno) {
	exit('连接错误'.$mysqli->connect_errno.':'.$mysqli->connect_error);
}
//4.准备SQL语句
$stmt=$db->prepare("UPDATE user SET user_name=?, email=? WHERE user_id=?;");
//5.设置绑定参数
$stmt->bind_param("ssi",$user_name,$email,$user_id);
$user_name = '周伯通';
$email = 'zbt@qq.com';
$user_id=5;

$stmt->execute();
echo '成功更新了'.$db->affected_rows.'条记录';

$stmt->close();
$db->close();

运行实例 »

点击 "运行实例" 按钮查看在线实例


  • PDO实现删除操作效果图:

3.png

  • PDO实现删除操作源代码:


4.png

  • PDO实现新增操作:

实例

<meta charset="UTF-8">
<?php
//1.连接数据库,创建PDO对象
$db = new PDO('mysql:dbname=wd2018', 'root', 'uyYYFGZxuVactZc7');

//2.准备预处理SQL语句,点位符使用命名参数格式
$sql = "INSERT `user` SET `user_name`=:name, `email`=:email, `password`=sha1(:password)";

//3.创建PDO预处理对象
$stmt = $db->prepare($sql);

//查看生成的SQL语句,可以复制到SQL命令窗口中进行运行,确保语句正解性
echo $stmt->queryString;exit();

//4.绑定参数到预处理对象
$data = ['name'=>'郭靖','email'=>'gj@163.com','password'=>'123456'];
$stmt->bindParam(':name',$data['name'],PDO::PARAM_STR);
$stmt->bindParam(':email',$data['email'],PDO::PARAM_STR);
$stmt->bindParam(':password',$data['password'],PDO::PARAM_STR);

//5.执行新增操作
if($stmt->execute()){
	//rowCount():返回上一个SQL语句影响的行数
	echo '<h3>成功添加了'.$stmt->rowCount().'条纪录</h3>';
}else {
	echo '<h3>添加失败</h3>';
	print_r($stmt->errorInfo());
	exit();
}

//6.销毁PDO对象 
$db = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

  • PDO实现新增操作简化版:区别在于简化了绑定参数和执行参加  去掉了判断和销毁PDO对象

//4.绑定参数并执行SQL语句
$data = ['name'=>'黄蓉','email'=>'hr@163.com', 'password'=>'123456'];
$stmt->execute($data);  //可直接给execute()传参数,省去参数绑定语句
echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';
  • 还能更加简化的

//如果添加多条,只需要提供一下数据,执行一下就行,预处理对象与语句已经在缓存中了,所以预处理效率最高
$stmt->execute(['name'=>'英姑','email'=>'yg@php.cn', 'password'=>'123456']);
echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';
$stmt->execute(['name'=>'中神通','email'=>'zst@php.cn', 'password'=>'123456']);
echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';


  •  PDO连接数据

 * 1. PDO是PHP与其它数据库之间的中间层,或者抽象层

 * 2. PDO屏蔽了各个数据库之间的差异,对PHP提供了一个统一的访问接口

 * 3. 使用PDO的第一步就是生成一个PDO对象,所有的功能必须要用这个对象来调用

 * 4. 成功返回PDO对象,失败抛出异常

//1.配置参数

 * DNS:数据源

 * 基本格式: 数据库类型:属性1:值1; 属性2:值2;...

 * 类型:如mysqli,oracle等

 * 属性: 主机,默认数据库,默认字符集,默认端口号

//例如: mysql:host=127.0.0.1;dbname=php;charset=utf8;port=3306;
$dsn = 'mysql:host=localhost; dbname=php; charset=utf8; port=3306';

//数据库用户名

$userName = 'root';

//数据库用户密码

$password = 'root';

//配置连接属性

$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,  //设置错误模式
    PDO::ATTR_CASE => PDO::CASE_NATURAL,  //数据表字段保持不变
    PDO::ATTR_EMULATE_PREPARES => true, //启用PDO模拟
    PDO::ATTR_PERSISTENT => true, //启用持久性连接
];

//使用try-catch()来捕获可能发生的错误

try {

    //调用PDO构造函数实例化PDO类,创建PDO对象

   $pdo = new PDO($dsn, $userName, $password, $options);

    //连接是所有操作的基础,无论你设置的错误模式级别是什么,都会强制使用EXCEPTION异常模式

} catch (PDOException $e) {

    die();  //连接错误是致命错误,必须停止脚本的执行

}

//断开PDO连接

//$pdo = null;

//销毁PDO对象

//unset($pdo);



  • PDO连接数据库简写版:

$pdo = new PDO('mysql:dbname=php;','root', 'root'); //其它参数取默认值


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议