在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理。

在mysqli操作中常常涉及到它的三个主要类:MySQLi类,MySQL_STMT类,MySQLi_RESULT类。预处理主要是利用MySQL_STMT类完成的。

预处理是一种重要的 防止SQL注入的手段,对提高网站安全性有重要意义。

本文案例为 数据库名为test,数据表名为test,  字段有id ,title 两个,id自增长主键。

使用mysqli预处理执行插入操作:

define("HOST", "localhost");

define("USER", 'root');

define("PWD", '');

define("DB", 'test');

$mysqli=new Mysqli(HOST,USER,PWD,DB);

if ($mysqli->connect_errno) {

"Connect Error:".$mysqli->connect_error;

}

$mysqli->set_charset('utf8');

$id='';

$title='title4';

//用?代替 变量

$sql="INSERT test VALUES (?,?)";

//获得$mysqli_stmt对象,一定要记住传$sql,预处理是对sql语句的预处理。

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

//第一个参数表明变量类型,有i(int),d(double),s(string),b(blob)

$mysqli_stmt->bind_param('is',$id,$title); //bind_param的第二个参数不能直接写数值,必须用变量传递过来

//执行预处理语句

if($mysqli_stmt->execute()){

echo $mtsqki_stmt->affected_rows; //影响行数

echo $mysqli_stmt->insert_id; //新增的id

}else{

echo $mysqli_stmt->error;

}

$mysqli->close();

使用mysqli预处理进行查询验证(登录等场景应用):

$id='4';

$title='title4';

$sql="SELECT * FROM test WHERE id=? AND title=?";

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

$mysqli_stmt->bind_param('is',$id,$title);

if ($mysqli_stmt->execute()) {

$mysqli_stmt->store_result();

if($mysqli_stmt->num_rows>0){

echo "验证成功";

}else{

echo "验证失败";

}

}

$mysqli_stmt->free_result();

$mysqli_stmt->close();

使用mysqli预处理执行查询语句:

$sql="SELECT id,title FROM test WHERE id>=?";

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

$id=1;

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

if($mysqli_stmt->execute()){

$mysqli_stmt->store_result();

//将一个变量绑定到一个prepared语句上用于结果存储

$mysqli_stmt->bind_result($id,$title);

while ($mysqli_stmt->fetch()) {

echo $id.' :'.$title.'
';

}

}

更多mysqli技术请参见php官方手册,查手册是学习的最好方法~

php mysql预处理_php mysqli扩展之预处理相关推荐

  1. php mysql 持久化_PHP: mysqli 扩展和持久化连接 - Manual

    mysqli 扩展和持久化连接 从 PHP 5.3 mysqli 扩展开始支持持久化连接. 持久化连接已经在 PDO MYSQL 和 ext/mysql 中提供支持. 持久化连接的目的在于重用客户端到 ...

  2. php操作mysql数据库的扩展有哪些_8.PHP操作MySQL数据库(Mysqli扩展)

    思考:如果数据库的操作都是需要我们手动去调用客户端发送指令,那么这样的操作有什么意义呢? 引入:手动通过客户端操作MySQL数据库,只是我们学习SQL的一种手段.要实现数据库的自动调用,就需要客户端能 ...

  3. php mysqli扩展之预处理

    在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理. 在mysqli操作中常常涉及到它的三个主要类: ...

  4. php mysql 预处理_PHP MySQL 预处理语句

    PHP MySQL 预处理语句 在本教程中,您将学习如何使用PHP在MySQL中使用预处理语句. 预处理语句是什么 预处理语句(也称为参数化语句)只是一个SQL查询模板,其中包含占位符而不是实际参数值 ...

  5. php mysql预处理_PHP MySQL 预处理语句

    预处理语句对于防止 MySQL 注入是非常有用的. 预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高. 预处理语句的工作原理如下:预处理:创建 SQL 语句模板并发送 ...

  6. mysqli扩展是mysql扩展的增强版_PHP学习笔记【22】--PHP数据库编程 mysql扩展库 和mysqli扩展库...

    <?php         // php数据库编程     //php链接有 mysql 和mysqli    //    $conn  = mysql_connect("localh ...

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

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

  8. mysql数据库与mysqli_通过 PHP Mysqli 扩展与 MySQL 数据库交互

    通过 PHP Mysqli 扩展与 MySQL 数据库交互 由 学院君 创建于8个月前, 最后更新于 6个月前 版本号 #1 1269 views 0 likes 0 collects 引言 前面学院 ...

  9. php7不支持mysql扩展了么_php7不支持mysql扩展需要改成mysqli扩展

    最近升级php7发现不支持mysql扩展,需要改成用mysqli扩展 看代码class Db{ private $username = ''; private $password = ''; priv ...

最新文章

  1. 解决jQuery和其它库的冲突
  2. MobileNetv2优化问题
  3. 《JavaScript入门经典(第4版)》上第5章一个实例程序的修正,完善
  4. (求助)請問DE2-70版子 音樂合成器
  5. mysql查看当前数据库的连接信息_查看 mysql 数据库当前连接数
  6. 大数据面试-03-大数据工程师面试题
  7. sql server 复制_SQL Server复制(合并)–复制架构更改中的性能问题
  8. android触摸滑动监听,Android 滑动监听的实例详解
  9. 如果微软开发了 Android,会有何不同?
  10. Tomcat报错 严重: A child container failed during start
  11. 确定手机imsi号码的方法
  12. 极速office(Word)如何插入分数
  13. 外卖优惠券返利系统外卖返利公众号搭建cps系统小程序SaaS源码
  14. 企业微信微信社群运营该怎么做?
  15. SCI论文各部分的写作原则与注意点
  16. Intel有那些45纳米的CPU
  17. [Hadoop] mac搭建hadoop3.X 伪分布模式
  18. Java语言实现小学数学练习
  19. Hystrix断路器 - 概述
  20. BugkuCTF 游戏过关

热门文章

  1. 速度超快!字节跳动开源序列推理引擎LightSeq
  2. 微软:杀死那个曾经全球第一的浏览器
  3. 距离高效率学习CV算法我还有多远的距离?
  4. 套娃成功!在《我的世界》里运行Win95、玩游戏,软件和教程现已公开
  5. 理科生用创意毁灭世界,爆笑!
  6. 模式设计概述:反应器(Reactor)模式
  7. 通俗易懂的TCP里面的三次握手以及四次挥手
  8. ACMNO.37 C语言-数字交换 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
  9. 深度学习 VS 传统计算机视觉
  10. 可旋转的2K显示器,写代码逼格要到位,免费包邮送到家