现在如果想要使用过程式的代码来操作数据库,只能使用 mysqli 扩展了。当然,mysqli 扩展也是支持面向对象式的写法的。 什么是 MySQLi MySQLi 扩展允许我们访问 MySQL4.1 及以上版本的数据库所提供的功能。 $mysqli = mysqli_connect("localhost", "root", "", "blog_test");$res = mysqli_query($mysqli, "SELECT * $mysqli = new mysqli("localhost", "root", "", "blog_test");$res = $mysqli->query("SELECT * FROM zyblog_test_user $mysqli = new mysqli("localhost", "root", "", "blog_test");$res = mysqli_query($mysqli, "SELECT * FROM
PHP中的MySQLi扩展学习(一)MySQLi介绍 关于 PDO 的学习我们告一段落,从这篇文章开始,我们继续学习另外一个 MySQL 扩展,也就是除了 PDO 之外的最核心的 MySQLi 扩展。 现在如果想要使用过程式的代码来操作数据库,只能使用 mysqli 扩展了。当然,mysqli 扩展也是支持面向对象式的写法的。 什么是 MySQLi MySQLi 扩展允许我们访问 MySQL4.1 及以上版本的数据库所提供的功能。 $mysqli = mysqli_connect("localhost", "root", "", "blog_test"); $res = mysqli_query($mysqli, "SELECT $mysqli = new mysqli("localhost", "root", "", "blog_test"); $res = mysqli_query($mysqli, "SELECT * FROM
本节课我们了解下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 来说功能更加的丰富,所以我们依然还会在学习过程中穿插各种 MySQLi 中好玩的方法函数。 $mysqli = new mysqli(); $mysqli->real_connect("localhost", "root", "", "blog_test"); var_dump($mysqli ($mysqli->affected_rows); var_dump($mysqli->insert_id); $mysqli->query("update zyblog_test_user set $mysqli = new mysqli("localhost", "root", "", "blog_test"); $mysqli->multi_query($sql); $i = 1; do{
所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 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 12)"); // 不存在的表 // 提交事务 $mysqli->commit(); } catch (Exception $e) { // 回滚事务 $mysqli
我们继续 MySQLi 扩展的学习,上篇文章中提到过,MySQLi 的扩展相对于 PDO 来说功能更加的丰富,所以我们依然还会在学习过程中穿插各种 MySQLi 中好玩的方法函数。 $mysqli = new mysqli();$mysqli->real_connect("localhost", "root", "", "blog_test");var_dump($mysqli); ($mysqli);// ["thread_id"]=>// int(164) 首先,我们实例化了一个 mysqli 对象。 ($mysqli->affected_rows);var_dump($mysqli->insert_id);$mysqli->query("update zyblog_test_user set password $mysqli = new mysqli("localhost", "root", "", "blog_test");$mysqli->multi_query($sql);$i = 1;do{ echo
PHP中的MySQLi扩展学习(六)MySQLI_result对象操作 在之前的文章中,我们就已经接触过 MYSQLI_result 相关的内容。它的作用其实就是一个查询的结果集。 但在 MySQLi 中,会把查询到的结果也放入一个对象中,这就是 MySQLI_result 对象。 MySQLI_result 对象属性 首先,我们要通过一段查询来获得一个 MySQLI_result 对象。 它其实就是默认指定为 MySQLI_NUM 的结构返回方式。 总结 至此,MySQLi 相关扩展的学习我们也就告一段落了,其它的一些类和函数比如 MySQLI_Driver 、 MySQLI_Exception 之类的内容大家可以自行查阅相关的文档,内容都不是很多
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_STMT对象操作 就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi ; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt->bind_param ; $id = 's'; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt- 可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。 测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/8.PHP中的MySQLi扩展学习(五)MySQLI_STMT
就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi 所生成的预处理语句的。 ; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt->bind_param ; $id = 's'; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt- 可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。 关于 MySQLI_result 对象的内容,我们将在下篇文章中再进行详细的学习了解。
作为替代,可以使用 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 ~
PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句 对于 MySQLi 来说,事务和预处理语句当然是它之所以能够淘汰 MySQL(原始) 扩展的资本。 所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 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
PHP5.0开始,不仅可以使用早期的mysql数据库扩展函数,还能使用新扩展的mysqli技术实现与mysql数据库的信息交流,PHP的mysqli扩展被封装在在一个类中,它是一种面向对象技术,只能在PHP5 和MYSQL4,1或更高的版本才能使用,(i)表示该进,使用mysqli,执行速度更快,更方便,更高效,也可以使数据库访问更安全(因为用类模式) 使用mysqli 简单流程 设置PHP.ini 配置文件 $res1 or $mysqli->affected_rows !=1){ $success = false; } $res2 = $mysqli->query($sql2); if(! $res2 or $mysqli->affected_rows ! .jpg 以上就是PHP Mysqli 常用代码集合所有详细内容。
执行sql语句时候mysqli详解 1. 连接数据库 连接数据库有两种方式,一种是通过mysqli_connect()帮助函数,另一种是通过new mysqli()对象来实现 两者所需传的参数同样都是这些(注意先后顺序): host 数据库地址 可以通过mysqli_fetch_array()、mysqli_fetch_assoc()、mysqli_fetch_all()、mysqli_fetch_row()等进行获取结果 当需要获取一条数据的时候可以使用 mysqli_fetch_row() mysqli_fetch_array() 该函数的第一个参数是通过mysqli_query()返回的对象 第二个参数是获取结果的类型: MYSQLI_ASSOC 关联数组 同mysqli_fetch_assoc()函数 MYSQLI_NUM 数字数组 MYSQLI_BOTH默认。
# MYSQLI_BOTH 默认情况 $sql = "SHOW TABLES"; $res = $connect->query($sql); $data = $res->fetch_array(); # $connect->query($sql); $data = $res->fetch_array(MYSQLI_ASSOC); # 或者 mysqli_fetch_array($res, MYSQLI_ASSOC 或者 mysqli_fetch_array($res, MYSQLI_NUM) var_dump($data); # 输出结果 array (size=1) 0 => string 'family' (length=6) mysqli_fetch_assoc() 该函数与mysqli_fetch_array第二个参数传递MYSQLI_ASSOC的结果是一样的 $sql = "SHOW TABLES (size=1) 'Tables_in_test' => string 'family' (length=6) mysqli_fetch_all 同mysqli_fetch_array一样,只不过他的默认获取是数字索引数组
PHP中的MySQLi扩展学习(二)mysqli类的一些少见的属性方法 虽说是少见的一些属性方法,但是可能还是有不少同学在日常的开发中使用过,这里只是学习了可能相对来说我们用得比较少的一些 mysqli 通过打印 mysqli 的 error_list 属性就可以看到当前的错误信息。 错误信息 紧接着上一段,对于执行语句的错误信息,我们可以通过几个 mysqli 中的属性来获得。 $mysqli2 = @new mysqli("xxx", "root", "", "blog_test"); var_dump($mysqli2->connect_errno); // int(2002 var_dump($mysqli->thread_safe); // NULL var_dump($mysqli->thread_id); // int(600) $thread_id = $mysqli mysqli 对象 上面说的很多属性其实我们可以直接通过打印 mysqli 对象就可以查看到。
.;"; mysqli_multi_query($link, $sql1); mysqli_multi_query($link, $sql2); 发现只有 sql1 的语句被执行了, 后面的没被执行. 好了, 找到官方手册后, 发现问题中被置顶的注意事项就是这个: WATCH OUT: if you mix $mysqli->multi_query and $mysqli->query, the latter php // BAD CODE: $mysqli->multi_query(" Many SQL queries ; "); // OK $mysqli->query(" SQL statement #1 php // WORKING CODE: $mysqli->multi_query(" Many SQL queries ; "); // OK while ($mysqli->next_result( > 好了,问题找到了.修改代码: if(mysqli_multi_query($link, $sqls)){ while(mysqli_next_result($link)){
// 切换用户 $mysqli->change_user('root2', "123", 'blog_test'); // 错误信息 $res = $mysqli->query( "SELECT * FROM 通过打印 mysqli 的 error_list 属性就可以看到当前的错误信息。 错误信息 紧接着上一段,对于执行语句的错误信息,我们可以通过几个 mysqli 中的属性来获得。 $mysqli2 = @new mysqli("xxx", "root", "", "blog_test");var_dump($mysqli2->connect_errno); // int(2002 var_dump($mysqli->thread_safe); // NULLvar_dump($mysqli->thread_id); // int(600)$thread_id = $mysqli- mysqli 对象 上面说的很多属性其实我们可以直接通过打印 mysqli 对象就可以查看到。
使用 MySQLi 和 PDO 向 MySQL 插入数据
在创建完数据库和表后,我们可以向表中添加数据。 以下实例向 "MyGuests" 表添加了新的记录:
实例 (MySQLi - 面向对象)
<? localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli >
实例 (MySQLi - 面向过程)
<? "
" . mysqli_error($conn);
}
mysqli_close($conn);
?>
实例 (PDO)
<?
MYSQL php PHP+Mysqli 事务处理 php+mysqli 事物处理 事物就是如果两条或多条数据只要有一条SQL语句错误,那么已经执行成功的执行回滚操作,把已经生效的SQL语句回滚为原来的值 代码 直接看代码吧 //SQL连接 $mysqli = new mysqli('127.0.0.1','root','root','test');//实例化Mysqli对象,参数分别是:数据库主机地址, 用户名,密码,数据库名 if (mysqli_connect_errno()) {//判断数据库连接是否错误 die(mysqli_connect_error()); } $mysqli->set_charset '; if($mysqli->multi_query($sql)){//multi_query() 可以同时执行多条SQL语句 $status_1= $mysqli->affected_rows >commit();//提交事务 }else{ $mysqli->rollback();//回滚 } } $mysqli->autocommit(true);//关闭事务 $mysqli