php mysqli面向对象,MySQLi面向对象预处理技术

预处理查询、更新、删除操作的基本步骤:

* 1. 查询表中是否有符合条件的记录,如果有就继续,否则提示用户;

* 2. 确定只查询到一条记录,并获取到这个记录的数据;

* 3. 准备要更新的数据,放在一个数组中;

* 4. 创建预处理语句,并生成预处理对象;

* 5. 执行预处理操作,并对执行结果进行分析;

* 6. 关闭预处理语句;

* 7. 关闭连接;

预处理更新操作代码如下:<?php

//1、连接数据库

require 'public/connect.php';

//2、查询更新项

$sql = "SELECT `id`,`name`,`email` FROM `user` WHERE `id`=?";

$id = 44;

//3、创建stmt对象,预处理查询语句

$mysqli_stmt = $mysqli->prepare($sql);

//4、绑定数据

$mysqli_stmt->bind_param('i',$id);

//5、执行查询和更新操作

if ($mysqli_stmt->execute()){

//返回数据

$mysqli_stmt->store_result();

if ($mysqli_stmt->num_rows()==1){

//绑定结果集字段与变量

$mysqli_stmt->bind_result($id,$name,$email);

//准备用于更新的数据,创建更新的预处理SQL语句

$data = ['name'=>'麦兜','email'=>'md@php.cn','password'=>'123'];

$sql = "UPDATE `user` SET `name`=?,`email`=?,`password`=sha1(?) WHERE `id`=?";

//创建预处理对象

$mysqli_stmt = $mysqli->prepare($sql);

//绑定参数

$mysqli_stmt->bind_param('sssi',$data['name'],$data['email'],$data['password'],$id);

//执行预处理更新操作: execute(),返回布尔值,成功true,失败为false

if ($mysqli_stmt->execute()){

//如果更新成功,应该根据受影响的记录数量,再进行一次判断

if ($mysqli_stmt->affected_rows){  //如果更新成功,会返回整数: 1

echo '

更新成功!

';

}else{

echo '

没有记录被更新!

';

}

}else{

echo '

更新失败'.$mysqli_stmt->error.'

';

}

}else{

echo "

没有查到到数据

";

}

}else{

echo "

查询失败'.$mysqli_stmt->error.'

";

}

//6、关闭预处理语句,关闭连接

$mysqli_stmt->close();  //关闭预处理语句

$mysqli->close();  //关闭连接

预处理删除代码如下:<?php

/**

*预处理删除操作

*/

//1、连接数据库

require 'public/connect.php';

//2、查询删除项

$sql = "SELECT `id`,`name`,`email` FROM `user` WHERE `id`=?";

$id = 44;

//3、创建stmt对象,预处理查询语句

$mysqli_stmt = $mysqli->prepare($sql);

//4、绑定数据

$mysqli_stmt->bind_param('i',$id);

//5、执行查询和删除操作

if ($mysqli_stmt->execute()){

$mysqli_stmt->store_result();  //如果执行查询成功,返回数据

if ($mysqli_stmt->num_rows == 1){  //如果结果集的数量为1,则执行下列代码

$mysqli_stmt->bind_result($id,$name,$email);  //绑定结果集字段与变量

$sql = "DELETE FROM `user` WHERE `id`=? "; //创建删除的预处理SQL语句

$mysqli_stmt = $mysqli->prepare($sql);  //创建预处理对象

$mysqli_stmt->bind_param('i',$id);  //绑定数据

if ($mysqli_stmt->execute()){  //执行删除操作

if ($mysqli_stmt->affected_rows){  //如果删除成功,会返回整数: 1

echo '

删除成功!

';

}else{

echo '

没有记录被删除!

';

}

}else{

echo '

删除失败'.$mysqli_stmt->error.'

';

}

}else{

echo "

没有查询到数据

";

}

}else{

echo "

查询失败'.$mysqli_stmt->error.'

";

}

//6、关闭预处理语句,关闭连接

$mysqli_stmt->close();  //关闭预处理语句

$mysqli->close();  //关闭连接

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值