PHP连接和操作MySQL数据库的常用方式有3种,分别是MySQLi (面向对象),MySQLi (面向过程),PDO (面向对象)。...MySQLi和PDO 都是PHP的扩展,MySQLi只针对 MySQL 数据库,PDO则可以应用在十几种数据库中。而面向对象和面向过程是项目开发中两种不同的编程思想。...以下演示的将是MySQLi (面向对象)的代码示例。 以下的操作中,并不是所有的操作都要同时出现,而是根据需求选择相对应的操作。 第一步 连接数据库 <?...$username = "root"; //数据库密码 $password = "123456"; //数据库名称 $database = 'testDB' // 创建连接 $conn = new mysqli
PHP中的MySQLi扩展学习(六)MySQLI_result对象操作 在之前的文章中,我们就已经接触过 MYSQLI_result 相关的内容。它的作用其实就是一个查询的结果集。...但在 MySQLi 中,会把查询到的结果也放入一个对象中,这就是 MySQLI_result 对象。...MySQLI_result 对象属性 首先,我们要通过一段查询来获得一个 MySQLI_result 对象。...查询结果集获取 MySQLI_result 对象的可见属性中,我们只能看到上面的那些信息。...MySQLI_Driver 对象可以帮助我们指定当前驱动的报错形式,之前的文章中我们也已经接触过。
就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi 所生成的预处理语句的。...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...而真正获得结果集的数据其实是通过另一个方法来获得一个 MySQLI_result 对象,然后再使用这个对象里面的方法就可以像 PDO 的 fetch() 一样来获得真正的结果集了。...然后通过该对象的 fetch_assoc() 就获得了键名形式的结果集数组。 关于 MySQLI_result 对象的内容,我们将在下篇文章中再进行详细的学习了解。...总结 关于 MySQLI_STMT 对象的内容还有一些,不过就不是那么常用了。从我们讲解的这些内容也可以看出它和 PDO 的许多不同之处。
PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作 就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...而真正获得结果集的数据其实是通过另一个方法来获得一个 MySQLI_result 对象,然后再使用这个对象里面的方法就可以像 PDO 的 fetch() 一样来获得真正的结果集了。...然后通过该对象的 fetch_assoc() 就获得了键名形式的结果集数组。 关于 MySQLI_result 对象的内容,我们将在下篇文章中再进行详细的学习了解。...对象操作.php 参考文档: https://www.php.net/manual/zh/book.mysqli.php
可以创建对象类数组,该数组可以接受任何类型的对象。在此类数组上运行期间,可以使用instanceof运算符。
现在如果想要使用过程式的代码来操作数据库,只能使用 mysqli 扩展了。当然,mysqli 扩展也是支持面向对象式的写法的。...仅支持面向对象方式使用 可以连接多种数据库,切换数据库带来的变更少,甚至可能不用修改代码 支持 存储过程 、 多语句执行 、 预处理语句 最后就是 MySQLi 。...方法名上全部改成 mysqli_xxx 就可以了。 面向对象式 面向对象式的就有点像 PDO 。我们要先获得一个连接句柄类,然后操作这个类就可以了。...zyblog_test_user");$row = $res->fetch_assoc();print_r($row); 在这段代码中,我们实例化了一个 mysqli 对象,然后使用面向过程的 mysqli_query...在接下来的文章中,我们将默认只使用 面向对象 式的写法来继续学习 MySQLi 扩展相关的知识。
一、对象的声明 1. 使用字面量(json格式)的方式构建对象 var obj={ 属性名:属性值, 方法名:function(){ //函数执行体 } } 2....使用 new Object() 的方式构建对象 var obj=new Object(); obj.属性名=属性值; obj.方法名=function(){ //函数执行体 } 3....使用构造函数的方式构建对象 function Foo([参数列表]){ this.属性名=属性值; this.方法名=function(){ //函数执行体 } } var...使用工厂方式构建对象 function createObject(nam,age){ var Foo=new Object(); Foo.name=name; Foo.age=age;...//执行代码 } var obj=new Foo(参1,参2); 二、对象的遍历 for-in是为遍历对象而设计的,不适用于遍历数组。
现在如果想要使用过程式的代码来操作数据库,只能使用 mysqli 扩展了。当然,mysqli 扩展也是支持面向对象式的写法的。...仅支持面向对象方式使用 可以连接多种数据库,切换数据库带来的变更少,甚至可能不用修改代码 支持 存储过程 、 多语句执行 、 预处理语句 最后就是 MySQLi 。...方法名上全部改成 mysqli_xxx 就可以了。 面向对象式 面向对象式的就有点像 PDO 。我们要先获得一个连接句柄类,然后操作这个类就可以了。...mysqli_query() 函数来执行语句,接着又使用面向对象的方式来获取结果集。...在接下来的文章中,我们将默认只使用 面向对象 式的写法来继续学习 MySQLi 扩展相关的知识。
一、声明对象 有两种声明对象的方式. 1、var obj = new Object(); 但是我们更提倡用第二种方法: 字面量式声明对象 2、var obj = {}; 1 5 Title 6 7 8 9 10 11 12 //声明对象...Object(); 14 var obj={}; 15 obj.name="刘德华"; 16 obj.age=55; 17 obj.showName=function(){//声明方法...调用属性 24 console.log(obj.age); 25 obj.showName();//调用方法 26 obj.showAge(); 27 二、封装对象...console.log(xiaoming.age); 17 xiaoming.showName(); 18 xiaoming.age(); 19 三、创建实例对象
文章目录 一、object 关键字 二、对象声明 三、对象表达式 四、伴生对象 一、object 关键字 ---- object 关键字 可以定义 单例类 ; 使用 object 关键字修饰的类 ,...只能创建一个实例对象 ; object 有 3 种使用方式 : 对象声明 : 定义单例类 ; 对象表达式 : 定义匿名内部类 ; 伴生对象 : 定义静态成员 ; 二、对象声明 ---- 使用 object...关键字 进行 对象声明 , 就是 定义单例类 ; 对象声明格式 : object 单例类类名 {} 代码示例 : object Student { var name = "Tom" var...三、对象表达式 ---- 使用 object 关键字 声明 对象表达式 , 就是 Kotlin 中的匿名内部类 ; 该类只使用一次 ; 定义 对象表达式 ( 匿名内部类 ) 是由于要 修改 类中的函数..., 常见的是要 覆盖重写函数 , 该 类 以及要 重写的函数 必须是用 open 修饰 ; 使用 对象表达式 创建出来的 匿名内部类 对象 , 只有 1 个实例对象 ; 下面的 对象表达式 ( 匿名内部类
声明 本系列文章内容全部梳理自以下几个来源: 《JavaScript权威指南》 MDN web docs Github:smyhvae/web Github:goddyZhao/Translation/...正文-对象 在 JavaScript 除了原始数据类型外,其余均是对象,函数是对象,数组也是对象;继承通过对象来实现,构造函数也通过对象来实现,所以对象在 JavaScript 里有着很重要的角色,理解和掌握对象的一些特性...对象分类 一般来说,有三类对象,分别是内置对象、宿主对象、自定义对象: 内置对象:是指语法标准规范中内置实现的一些对象,例如函数、数组、正则、日期等这些内置对象; 宿主对象:是指 JavaScript...添加属性 但需要注意一点的是,不像 Java 中在编写类代码,为类添加成员变量时,可以只声明却初始化。在 JavaScript 中,是不允许这样的。...而之前说过的,通过 var 声明的全局变量,虽然它最后是作为全局对象的属性存在,但它的可配置性被设为 false,所以这些全局变量才无法通过 delete 被删除。
$mysqli = new mysqli();$mysqli->real_connect("localhost", "root", "", "blog_test");var_dump($mysqli);...($mysqli);// ["thread_id"]=>// int(164) 首先,我们实例化了一个 mysqli 对象。...通过打印 mysqli 对象的内容就可以看出,两个连接的线程ID不同,也就是说,它们是不同的两个连接,但是使用的都是最上面所初始化的那个 mysqli 对象。...如果执行的是 SELECT 语句,那么 query() 返回的就是一个 mysqli_result 对象,它代表从一个数据库查询中获取的结果集。关于这个对象的内容我们将在后面的文章中进行详细的说明。...如果使用 query() 方法,返回的虽然是 PDOStatement 对象,但是它是无法遍历的。 接下来我们就看看 MySQLi 是如何来执行这个多条语句拼接在一起的 SQL 语句的。
本节课我们了解下mysqli扩展及几个sql。...扩展 class mysqli{ } //数据库连接 $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /.../数据库连接错误号码 $mysqli->connect_errno //数据库连接错误内容 $mysqli->connect_error //设置编码 $mysqli->set_charset("utf8mb4...")) //执行sql语句 $result=$mysqli->query($sql); //设置结果类型 返回一行的数据 //MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH...$list[]=$rs; } //执行sql错误内容 $mysqli->error //关闭连接 $mysqli->close(); //结果记录数 $result->num_rows //关闭结果
PHP中的MySQLi扩展学习(三)mysqli的基本操作 我们继续 MySQLi 扩展的学习,上篇文章中提到过,MySQLi 的扩展相对于 PDO 来说功能更加的丰富,所以我们依然还会在学习过程中穿插各种...var_dump($mysqli); // ["thread_id"]=> // int(164) 首先,我们实例化了一个 mysqli 对象。...通过打印 mysqli 对象的内容就可以看出,两个连接的线程ID不同,也就是说,它们是不同的两个连接,但是使用的都是最上面所初始化的那个 mysqli 对象。...如果执行的是 SELECT 语句,那么 query() 返回的就是一个 mysqli_result 对象,它代表从一个数据库查询中获取的结果集。关于这个对象的内容我们将在后面的文章中进行详细的说明。...如果使用 query() 方法,返回的虽然是 PDOStatement 对象,但是它是无法遍历的。 接下来我们就看看 MySQLi 是如何来执行这个多条语句拼接在一起的 SQL 语句的。
static 方法无法声明为接口,无法被重写——用更学术的话来说,static 方法没有面向对象的消息传递和延迟绑定特性[参考]。...而 Scala 为了完成一切皆对象的使命,以及提高与 Java 的兼容性,提出了伴生对象这个概念来代替 static 方法。随后出身的 Kotlin 也借鉴了这个概念。...companion 伴生对象是一个对象,它在类初始化时被实例化。...因为伴生对象不再是类的 static 方法,而是某个类的实例化对象,所以它可以声明接口,里面的方法也可以被重写,具备面向对象的所有特点。...在这里,Kotlin 希望能够实例化 Companion 类,但又不想声明一个 public 的构造器,于是就声明了这样一个特殊的构造器。
比如在Thinkphp中,虽然允许我们可以通过对象属性方式去调用,但是并没有语法提示。 添加注释后 就舒服很多了。
所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 MySQLi 中这两大特性与 PDO 在使用上的区别。 事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。...而在 MySQLi 中,我们则需要指定 MySQLi_Driver 对象中的报错属性为抛出异常,很明显,MySQLi_Driver 就是 MySQLi 的驱动对象。...// 使用异常处理错误情况 $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT...try { // 开始事务 $mysqli->begin_transaction(); $mysqli->query("insert into tran_innodb (name...结果集对象 $username='bbb'; $stmt->bind_param('s', $username); $stmt->execute(); $bUser = $stmt->fetch();
对象表达式可访问或修改其所在范围内的局部变量 二、对象声明和单例模式 对象声明的语法格式如下: object ObjectName [: 0~N个父类型]{ //对象表达式的类体部分 } 对象声明与对象表达式的语法很相似...两者还有如下区别: 对象表达式是一个表达式,可以被赋值给变量;而对象声明不是表达式,不能用于赋值。 对象声明可包含嵌套类,不能包含内部类;而对象表达式可包含内部类,不能包含嵌套类。...对象声明不能定义在函数和方法内;但对象表达式可嵌套在其他对象声明或非内部类中。...对象声明专门用于实现单例模式,对象声明所定义的对象也就是该类的唯一实例,程序可通过对象声明的名称直接访问该类的唯一实例。...三、伴生对象和静态成员 在类中定义的对象声明,可使用companion修饰,这样该对象就变成了伴生对象。
作为替代,可以使用 mysqli 或者 PDO_MySQL 扩展代替。 MySQL 增强版。 mysqli扩展允许我们访问MySQL 4.1及以上版本提供的功能。...是 否 是否支持所有MySQL4.1以上功能 是 否 MySQLi 的 i 代表 Improvement。...相关概念 MySQL 与 MySQLi 都是PHP方面的函数集。 在 PHP5 版本以后,增加了mysqli的函数功能。 某种意义上讲,它是MySQL系统函数的增强版,更稳定更高效更安全。...MySQLi 多次运行将使用同一连接进程,减少了服务器的开销。 链接方式 <?...建议 PHP版本为5.x建议使用 mysqli 扩展。 PHP版本为7 只能使用 mysqli 扩展。 Thanks ~
领取专属 10元无门槛券
手把手带您无忧上云