热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

57.mysqli扩展库(4)

1.sql语句执行原理2.mysqli预处理<?phpheader(Content-Type:texthtml;charsetutf8);

1. sql 语句执行原理
这里写图片描述


2. mysqli 预处理
这里写图片描述
这里写图片描述

php
header('Content-Type:text/html;charset=utf8');

//预编译演示

//需求,使用预编译的方式,向数据库添加3个用户

//1.创建 mysqli 对象

$mysqli = new MySQLi('localhost','root','123456','test');

//2.创建预编译对象

$sql = "insert into user1 (name,password,email,age) values(?,?,?,?)";//? 相当于占位符,用数据顶替?
$mysqli_stmt = $mysqli->prepare($sql) or die($mysqli->error);

//3.绑定参数
$name = '小红';
$password='xiaohong';
$email = 'aa@sina.com';
$age = '200';

//4.参数绑定->给?赋值,这里类型和顺序都要一一对应
$mysqli_stmt->bind_param('sssi',$name,$password,$email,$age);

//5.执行
$b = $mysqli_stmt->execute();
if(!$b){
    die("操作失败" . $mysqli_stmt->error);
}else{
    echo "操作成功";
}

//释放资源
$mysqli->close();

批量增加:

php
header('Content-Type:text/html;charset=utf8');

//预编译演示

//需求,使用预编译的方式,向数据库添加3个用户

//1.创建 mysqli 对象

$mysqli = new MySQLi('localhost','root','123456','test');

//2.创建预编译对象

$sql = "insert into user1 (name,password,email,age) values(?,?,?,?)";//? 相当于占位符,用数据顶替?
$mysqli_stmt = $mysqli->prepare($sql) or die($mysqli->error);

//3.绑定参数
$name = '小红';
$password='xiaohong';
$email = 'aa@sina.com';
$age = '200';

//4.参数绑定->给?赋值,这里类型和顺序都要一一对应
$mysqli_stmt->bind_param('sssi',$name,$password,$email,$age);

//5.执行
$b = $mysqli_stmt->execute();

//6. 继续添加,这里可以用循环
$name = "老妖";
$password="laoyao";
$email="laoyao@qq.com";
$age='100';
$mysqli_stmt->bind_param('sssi',$name,$password,$email,$age);
$b = $mysqli_stmt->execute();

$name = "存储";
$password="cuenchu";
$email="cuenchu@qq.com";
$age='10';
$mysqli_stmt->bind_param('sssi',$name,$password,$email,$age);
$b = $mysqli_stmt->execute();

if(!$b){
    die("操作失败" . $mysqli_stmt->error);
}else{
    echo "操作成功";
}

//释放资源
$mysqli->close();

3.使用预处理进行查询

php
header('Content-Type:text/html;charset=utf8');

//预编译演示

//需求,使用预编译的方式,查询所有id>5的用户的id,name,email,age
// id 为变化的

$mysqli = new MySQLi('localhost','root','123456','test');

if($mysqli->connect_error){
    die($mysqli->connect_error);
}

//创建一个预定义对象
$sql = "select id,name,email from user1 where id>?";
$mysqli_stmt = $mysqli->prepare($sql);
$id=5;
//绑定参数,即给?赋值
$mysqli_stmt->bind_param("i",$id);

//绑定结果集
$mysqli_stmt->bind_result($id,$name,$email);//可以不跟字段一样,引用传递

//执行
$mysqli_stmt->execute();

//取出绑定的值
while($mysqli_stmt->fetch()){
    echo "
--$id--$name--$email"
; } //关闭资源 //释放结果 $mysqli_stmt->free_result(); //关闭预编译的语句 $mysqli_stmt->close(); //关闭连接 $mysqli->close();

这里写图片描述
这里写图片描述
再次执行新的 sql 查询:

php
header('Content-Type:text/html;charset=utf8');

//预编译演示

//需求,使用预编译的方式,查询所有id>5的用户的id,name,email,age
// id 为变化的

$mysqli = new MySQLi('localhost','root','123456','test');

if($mysqli->connect_error){
    die($mysqli->connect_error);
}

//创建一个预定义对象
$sql = "select id,name,email from user1 where id>?";
$mysqli_stmt = $mysqli->prepare($sql);
$id=5;
//绑定参数,即给?赋值
$mysqli_stmt->bind_param("i",$id);

//绑定结果集
$mysqli_stmt->bind_result($id,$name,$email);//可以不跟字段一样,引用传递

//执行
$mysqli_stmt->execute();

//取出绑定的值
while($mysqli_stmt->fetch()){
    echo "
--$id--$name--$email"
; } //还想执行另外一个 sql 指令 echo "
*****绑定新的id号******"
; $id=10; //绑定参数,即给?赋值 $mysqli_stmt->bind_param("i",$id); //绑定结果集,这时候无需再绑 //$mysqli_stmt->bind_result($id,$name,$email);//可以不跟字段一样,引用传递 //执行 $mysqli_stmt->execute(); //取出绑定的值 while($mysqli_stmt->fetch()){ echo "
--$id--$name--$email"
; } //关闭资源 //释放结果 $mysqli_stmt->free_result(); //关闭预编译的语句 $mysqli_stmt->close(); //关闭连接 $mysqli->close();

这里写图片描述


预编译可以自动防止 sql 注入

这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述


4. 其他函数的使用


header('Content-Type:text/html;charset=utf8');

function showTable($table_name) {
    $mysqli = new MySQLi('localhost','root','123456','test');

    if($mysqli->connect_error){
        die($mysqli->connect_error);
    }

    //$sql = "select * from $table_name";
    $sql = "desc user1";
    $res = $mysqli->query($sql);

    //如何获取返回总行数和列数
    echo "共有 行" . $res->num_rows . "--列" . $res->field_count;

    echo "";
    //如何取出表头,从$res取出while($field = $res->fetch_field()){
        echo""; //用 {} 解析变量
    }
    echo"";


    //循环取出数据while($row = $res->fetch_row()){
        echo"";
        foreach($rowas$k=>$v ){
            echo"";

        }
        echo"";
    }
    echo"
{$field->name}
$v
"
; //关闭资源 $res->free(); $mysqli->close(); } showTable("user1");

这里写图片描述
这里写图片描述


5. PDO 好处
这里写图片描述
这里写图片描述


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • scrapy 采集入为库 mysql 数据库,只更新一个字段 提示这个语法错误?
    就是查询有没有这个字,如果查到这个字就更新这个字的bsmc字段表是news_topic插入代码如下: ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
author-avatar
胡萝卜咯198408
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有