php mysqli扩展之预处理
在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理。
在mysqli操作中常常涉及到它的三个主要类:MySQLi类,MySQL_STMT类,MySQLi_RESULT类。预处理主要是利用MySQL_STMT类完成的。
预处理是一种重要的 防止SQL注入的手段,对提高网站安全性有重要意义。
本文案例为 数据库名为test,数据表名为test, 字段有id ,title 两个,id自增长主键。
使用mysqli预处理执行插入操作:
<?php 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.'<br/>';}}
更多mysqli技术请参见php官方手册,查手册是学习的最好方法~
转载于:https://www.cnblogs.com/JeromeZ/p/9234588.html
php mysqli扩展之预处理相关推荐
- php mysql预处理_php mysqli扩展之预处理
在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理. 在mysqli操作中常常涉及到它的三个主要类: ...
- PHP的mysqli扩展
PHP的mysqli扩展: 一.php.ini需要开启extension=php_mysqli.dll mysqli主要包括:mysqli.mysqli_result.mysql_stmt三个类,通过 ...
- Duang~MySQLi 扩展库来袭
PHP-MySQL 函数库是 PHP 操作 MySQL 资料库最原始的扩展库,PHP-MySQLi 的 i 代表 Improvement ,相当于前者的增强版,也包含了相对进阶的功能,另外本身也增加了 ...
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第39讲:PHP数据库编程MySQLi扩展库
陈力:传智播客古代 珍宝币 泡泡龙游戏开发第39讲:PHP数据库编程MySQLi扩展库 mysqli扩展允许我们访问MySQL 数据库,并对MySql数据库进行curd操作.mysqli扩展可以进行数 ...
- PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作
PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作 就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 M ...
- mysql数据库与mysqli_通过 PHP Mysqli 扩展与 MySQL 数据库交互
通过 PHP Mysqli 扩展与 MySQL 数据库交互 由 学院君 创建于8个月前, 最后更新于 6个月前 版本号 #1 1269 views 0 likes 0 collects 引言 前面学院 ...
- php 开启mysql_php如何开启mysqli扩展
php开启mysqli扩展的方法:首先打开php.ini配置文件:然后找到[extension=php_mysqli.dll],并取消注释:最后找到[extension_dir],设置ext路径即可. ...
- php操作mysql数据库的扩展有哪些_8.PHP操作MySQL数据库(Mysqli扩展)
思考:如果数据库的操作都是需要我们手动去调用客户端发送指令,那么这样的操作有什么意义呢? 引入:手动通过客户端操作MySQL数据库,只是我们学习SQL的一种手段.要实现数据库的自动调用,就需要客户端能 ...
- php7不支持mysql扩展了么_php7不支持mysql扩展需要改成mysqli扩展
最近升级php7发现不支持mysql扩展,需要改成用mysqli扩展 看代码class Db{ private $username = ''; private $password = ''; priv ...
最新文章
- 只需一行代码,你的纯文本秒变 Markdown
- my vim IDE 编辑器的配置
- Python 动态生成多维数组
- “一带一路”谋定沿边开放发展-刘虹飞:经信研究形成共识
- readyboost提升明显吗_iphone12promax参数对比11ProMax区别 性能提升多少
- 增大iphone音量技巧_原来苹果手机隐藏功能这么好用!调整这个设置,一键增大外放音量...
- Replace-iOS
- CMMI与Agile敏捷开发比较之二:需求管理篇(兼谈用敏捷实现和满足CMMI的ReqM过程域)...
- (三)线程同步工具集_1---控制线程并发访问一个资源
- CSU - 1803 数论GCD
- 【AMESim】AMESim和Simulink联合仿真步骤
- 【VB6】如何用纯VB代码写个五子棋程序?(一)
- 移动端---媒体查询
- premiere cc2015 导入mov视频没有声音的解决方案
- Python第三课:列表,元组,集合
- js获取当前时间24小时制
- android系统开机默认设置修改记录
- 微贷七年之痒:重线下、追科技、争存量,能否赢未来?
- Elasticsearch:创建 API key 接口访问 Elasticsearch
- SSM+社区线上超市购物系统毕业设计-附源码211704
热门文章
- 华为、阿里员工跳槽至微软受抵制,微软当事人称:只是玩梗
- 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
- String字符串位置移动
- 2018网站信息系统安全等级保护限期整改通知书的处理解决方案
- 数据科学家所需的大脑训练
- JavaScript 日期联动选择器
- Extensible Messaging and Presence Protocol (XMPP): Core
- VC++、MFC最好的开源项目
- linux下pptpd的安装配置(×××)
- 看有道难题比赛有恶心感 ,付源码挑战,博客园目前纯速度最快。