PHP中如何使用mysqli的事务与预处理语句

对于mysqli来说,事务和预处理语句当然是它之所以能够淘汰mysql扩展的资本。我们之前也已经学习过了pdo中关于事务和预处理语句相关的内容。所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看mysqli中这两大特性与pdo在使用上的区别。

PHP中如何使用mysqli的事务与预处理语句

事务处理

首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。关于这个功能就和 PDO 很不一样了。在 PDO 中,我们直接指定连接的报错属性就可以了。而在 MySQLi 中,我们则需要指定 MySQLi_Driver 对象中的报错属性为抛出异常,很明显,MySQLi_Driver 就是 MySQLi 的驱动对象。

// 使用异常处理错误情况$driver = new mysqli_driver();$driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;

登录后复制

这样就指定了在使用 MySQLi 扩展时,所有的错误信息都会作为异常抛出。

接下来的内容,其实就和 PDO 很相似了。

立即学习“PHP免费学习笔记(深入)”;

try {    // 开始事务    $mysqli->begin_transaction();    $mysqli->query("insert into tran_innodb (name, age) values ('Joe', 12)");    $mysqli->query("insert into tran_innodb2 (name, age) values ('Joe', 12)"); // 不存在的表    // 提交事务    $mysqli->commit();} catch (Exception $e) {    // 回滚事务    $mysqli->rollback();    var_dump($e->getMessage());    // string(44) "Table 'blog_test.tran_innodb2' doesn't exist"}

登录后复制

我们同样是使用一个 begin_transaction() 来启动事务。然后通过 commint() 方法来提交事务。在这段测试代码中,第二条 SQL 语句是会报错的,于是进入了 catch 中,使用 rollback() 来回滚事务。

预处理语句

总体来说,事务的处理和 PDO 的区别不大,但是预处理语句和 PDO 中的使用的区别就有一些了。首先是我们的 MySQLi 中的占位符只有 ? 问号占位。另外也只有 bind_param() 没有类似于 PDO 中的 bindValue() 方法。

$stmt = $mysqli->prepare("select * from zyblog_test_user where username = ?");$username = 'aaa';$stmt->bind_param("s", $username); // 绑定参数$stmt->execute(); // 执行语句$aUser = $stmt->fetch(); // 获取mysqli_result结果集对象$username='bbb';$stmt->bind_param('s', $username);$stmt->execute();$bUser = $stmt->fetch();var_dump($aUser);// array(4) {//     ["id"]=>//     int(1)//     ["username"]=>//     string(3) "aaa"//     ["password"]=>//     string(3) "aaa"//     ["salt"]=>//     string(3) "aaa"//   }var_dump($bUser);// array(4) {//     ["id"]=>//     int(2)//     ["username"]=>//     string(3) "bbb"//     ["password"]=>//     string(3) "bbb"//     ["salt"]=>//     string(3) "123"//   }

登录后复制

从代码中可以看出,bind_param() 方法的使用也和 PDO 有很大的不同。它不需要下标,而是给了一个 s 参数。这个参数表明的是绑定数据的类型,s 就是字符串类型。其它的类型我们在学习 MySQLi_STMT 相关的内容时再深入的了解。

总结

其实从代码层面来说,大部分的内容都是和 PDO 非常相似的,只是有些参数的不同而已。对于我们来说,还是多以学习了解为主,在自己封装或者使用某些以 MySQLi 为底层数据库操作的框架时不至于晕头转向。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/7.PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句.php

登录后复制

推荐学习:php视频教程

以上就是PHP中如何使用mysqli的事务与预处理语句的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2510792.html

(0)
上一篇 2025年3月5日 14:12:48
下一篇 2025年2月18日 00:57:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • PHP如何实现定时器效果

    php没有类似于js中的setinterval或者settimeout这样的原生定时器相关的函数。但是我们可以通过其他方式来实现,比如使用declare。下面就由小编来为大家介绍一下declare的用法 先来看看是如何实现的,然后我们再好好…

    2025年3月5日
    200
  • php中的错误日志级别有哪些

    php中的错误日志级别有E_ALL、E_ERROR、E_RECOVERABLE_ERROR、E_WARNING、E_PARSE、E_STRICT等等。 本文操作环境:windows10系统、php 7.3、thinkpad t480电脑。 …

    2025年3月5日
    200
  • php正则表达式怎么转义点

    在 php 中,使用正则表达式匹配特定的字符串是一项重要的技能。在正则表达式中,点号(.)代表匹配任何字符。但是,有时候我们需要匹配真正的点号,而不是任何字符。在这种情况下,我们需要使用转义字符来转义点号。 转义字符是在一个特殊字符前添加一…

    编程技术 2025年3月5日
    200
  • dw中php网址打不开怎么办

    最近有不少dw用户反馈,在使用dw进行代码编辑时,php网址常常无法打开。这个问题出现的原因有很多,可能是dw软件本身出了问题,也可能是因为服务器配置或是相关的网络环境等因素所致。这篇文章将深入研究这个问题的原因,并提出一些解决方案,以帮助…

    编程技术 2025年3月5日
    200
  • 微信公众号搭建php代码

    随着互联网时代的到来,各种新兴的社交媒体相继出现。微信公众号作为一种新兴的社交媒体,已经成为很多人日常社交的必备之一。而作为一名开发者,如果想要自己搭建一个微信公众号,就必须掌握一定的技能。本文将介绍如何通过php代码来搭建微信公众号。 一…

    编程技术 2025年3月5日
    200
  • php阶段变量用法

    php是一种流行的脚本语言,被广泛应用于网站和应用程序的开发中。php有许多功能强大的特性,其中之一就是阶段变量。阶段变量是在程序生命周期内存储信息的一种方法,通常用于验证、错误检测和会话管理等操作。 本文将探讨php阶段变量的用法,包含以…

    编程技术 2025年3月5日
    200
  • php怎么获取错误 警告

    php是一种广泛使用的服务器端脚本语言,它可以用来开发复杂的web应用程序。在php中,出现错误和警告是很常见的,这些错误和警告可能会导致应用程序的崩溃或其他不良后果。因此,了解如何获取php错误和警告信息是非常重要的,这对于开发人员诊断问…

    编程技术 2025年3月5日
    200
  • php进制转换补位怎么实现

    php是一门广泛应用于web开发领域的服务器端脚本语言,处理数字运算也是php中的一个重要部分。在数字运算中,进制转换和补位是两个关键的概念。本文将详细介绍php中的进制转换和补位操作,帮助读者更好地理解和运用这两个操作。 一、进制转换 1…

    编程技术 2025年3月5日
    200
  • 介绍php输出区别

    php是一门广泛使用的编程语言,用于开发基于web的应用程序。在php中,输出是完成web应用程序最常用的过程之一,因此更深入地了解php中的输出区别是非常重要的。 本文将介绍PHP中的三种主要输出方式,并比较它们之间的差异。这些输出方式包…

    编程技术 2025年3月5日
    200
  • php有没有foreach

    php是一种广泛应用的编程语言,被用于开发许多不同类型的web应用。在php中,有许多的循环结构可供使用,其中最常用的也是最基础的循环结构,就是foreach循环。 首先,我们来看一下foreach循环的基本语法: foreach ($ar…

    编程技术 2025年3月5日
    200

发表回复

登录后才能评论