<?php
/**
* 处理数据库的扩展库
*
* mysqli的预处理语句
* mysqli_stmt预处理类(推荐使用的类)
* 优点:(mysqli和mysqli_result类的相比)
* 1.性能:mysqli_stmt高(执行多条类型相同不同数据的sql,不用多次编译sql)
* 2.安全上:sql注入问题(用?占位符来解决)
* 使用(详情见代码):
* ?占位符绑定:(邦定时要注意,后写的信息要与定好的类型匹配否则无法执行)
* 例子:$stmt->bind_param("isd",$id,$name,$price);
* i:整型
* d:double
* s:string
* b:二进制数
* 返回mysqli_stmt预处理类对象:$stmt = $mysqli->prepare($insert)
* 一次性将结果全取出来:store_result()
*
*/
//使用面向对象的方式:
$mysqli = new mysqli("localhost","root","root","hibernate");
if (mysqli_connect_errno()){
echo "连接失败:".mysqli_connect_error();
$mysqli = null;
exit();
}
$mysqli->autocommit(true);
$insert = "insert into users values (?,?,?);";
//1.返回mysqli_stmt预处理类对象
$stmt = $mysqli->stmt_init();
//准备一条语句放在服务器上
$stmt->prepare($insert);
//2.mysqli的方式(简化了操作)
//$stmt = $mysqli->prepare($insert);
$stmt->bind_param("isd",$id,$name,$price);
$id = 32;
$name = "ssssss";
$price = 21.23;
//绑定之后开始执行了
if ($stmt->execute()){
echo "执行成功";
}else {
echo "执行失败";
}
//2.处理结果集
//准备好语句
$select = "select * from users where id > ?";
//准备一条语句放在服务器上
$stmt->prepare($select);
$stmt->bind_param("i",$select_id);
//绑定结果集(要与查询的字段个数相同)
$stmt->bind_result($id,$name,$price);
$select_id = 12;
//绑定之后开始执行了
if ($stmt->execute()){
echo "执行成功";
}else {
echo "执行失败";
}
//获取结果集(每次获取)
while ($stmt->fetch()){
echo " <br>$id $name $price";
}
echo " <br>记录总数:".$stmt->num_rows;
//一次性将结果全取出来
$stmt->store_result();
//字段信息
$result = $stmt->result_metadata();
while ($field = $result->fetch_field()){
echo "<br>".$field->name;
}
$stmt->free_result();
$stmt->close();
$mysqli->close();
?>
分享到:
相关推荐
PHP-MySQLi-Database-Class, 一个使用 MySQLi 和预处理语句的PHP MySQL类的包装器 $v ) 和数组($k = > array ($v ,$v))中的结果。 $user = $db->map (\'login\')->ObjectBuilder()->getOne (\'users\', \'login
本文实例讲述了PHP防止sql注入小技巧之sql预处理原理与实现方法。分享给大家供大家参考,具体如下: 我们可以把sql预处理看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。 我们来看下它有...
主要介绍了php+mysqli使用预处理技术进行数据库查询的方法,实例分析了php+mysqli预处理技术的使用技巧,需要的朋友可以参考下
1、使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 代码如下:<?php //mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 //1、创建mysqli对象 $mysqli = new MySQLi(“localhost”,”...
记得以前php点点通也写过mysqli的预处理的php教程,那时候只是看书乱写的,没懂原理,数月过后,突然明白了很多: 想想看。...mysqli还能防止sql注入攻击! 看看下面这个预编译代码: 代码如下: <?
介绍php封装的mysqli类,结合实例形式分析了php针对mysqli操作类的定义与使用技巧,掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性-为了防止在类外引入这个...
安全,高新能的PHP mysql-mysqli数据库驱动类,支持主从,分库分表,sql注入防御等,Hi-mydb
主要介绍了php+mysqli预处理技术实现添加、修改及删除多条数据的方法,实例分析了mysqli实现预处理的原理及使用技巧,可有效提高程序运行效率,非常具有实用价值,需要的朋友可以参考下
介绍php封装的mysqli类,结合实例形式分析了php针对mysqli操作类的定义与使用技巧,掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性-为了防止在...
一个在PHP中以mysqli方式连接数据库的一个数据库类实例,该数据库类是从一个PHP的CMS中整理出来的,可实现PHP连接数据库类,MySQLi版,兼容PHP4,对于有针对性需要的朋友可根据此代码进行优化和修改。
PHP数据库操作中,mysqli相对于mysql有很大的优势,建议大家使用;之前我们有介绍过如何在PHP5中使用mysqli的prepare操作数据库,使用mysqli更是支持多查询特性,请看下面这段php代码: <?php $mysqli = new ...
mysqli基本操作类,面向对象,
php实现 数据库为mysql 使用mysqli连接 对增删改查的动作安全校验 使用方法: $db->from('xfz_user')->where($userArr)->getOne(); $db->from('xfz_user')->where($userArr)->insert();
过滤用户输入:在查询数据库之前,你应该使用PHP的mysqli_real_escape_string函数对用户输入进行过滤,以防止SQL注入攻击。 使用HTML实体转义:在显示留言内容时,你应该使用PHP的htmlspecialchars函数将HTML标记...
介绍php缓存数据功能的mysqli类,若框架中使用__autoload(),可以不用加载文件,需要的朋友可以学习参考,如果小伙伴们有更好的方案可以拿过来与我们一起学习分享。
PHP中基于MYSQLI类操作MYSQL数据库的实现.pdf
技巧举例:在使用mysqli或PDO扩展操作数据库时,采用预处理语句防止SQL注入,提高安全性及代码可维护性。 使用PHP内置函数 实践指南:充分利用PHP内置的字符串处理函数如trim(), strpos(), 数组处理函数如array_...
初始化声明并返回 mysqli_stmt_prepare() 使用的对象: <?php // 假定数据库用户名:root,密码:123456,数据库:codingdict $con=mysqli_connect(localhost,root,123456,codingdict); if (mysqli_connect_...