php mysqli mysql

admin3个月前软件教程35

PHP与数据库常用扩展:mysqli & mysql

PHP与数据库常用扩展:mysqli & mysql

"/>

无论是哪种互联网应用,数据库都是必不可少的一环,本文将介绍php中数据库的相关扩展mysqli与mysql。mysqli是mysql扩展的新版,支持事务处理和面向对象的语言调用方式,用于mysql8.0 (及以后的版本),而mysql则是php早期的数据库扩展。

mysqli实现与mysql的区别

mysqli与mysql的用法上有所不同。mysqli支持面向对象和基于过程,可以针对不同的用户操作。在此,我们以面向对象和基于过程各一个举例:

$mysqli = new mysqli("localhost", "root", "", "example");//面向对象if ($mysqli->connect_errno) {echo "Failed to connect to MySQL: " . $mysqli->connect_error;}mysqli_query($mysqli,"CREATE TABLE Persons (PersonID int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255))");//向表中插入数据mysqli_query($mysqli,"INSERT INTO Persons (PersonID, LastName, FirstName, Address, City)VALUES (1,'Doe','John','456 Park Avenue','New York')");mysqli_close($mysqli);//关闭连接$mysqli = mysqli_connect("localhost","root","","example");//基于过程if (mysqli_connect_errno()) {echo "Failed to connect to MySQL: " . mysqli_connect_error();}mysqli_query($mysqli,"CREATE TABLE Persons (PersonID int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255))");//向表中插入数据mysqli_query($mysqli,"INSERT INTO Persons (PersonID, LastName, FirstName, Address, City)VALUES (1,'Doe','John','456 Park Avenue','New York')");mysqli_close($mysqli);//关闭连接

mysqli实现了面向对象的操作方式,mysqli对象调用成员方法;而mysql则是基于过程的过程式风格,每个mysql函数调用时都需要传入连接标识符。

mysqli与mysql支持的操作

mysqli(及mysql)的基本操作包括:连接数据库、查询数据库、批量操作、预处理和事务处理等。

//连接数据库$mysqli = new mysqli("localhost", "root", "", "example");if ($mysqli->connect_errno) {echo "Failed to connect to MySQL: " . $mysqli->connect_error;}//查询数据库$sql = "SELECT * FROM Persons";$result = $mysqli->query($sql);//预处理SQL语句$stmt = $mysqli->prepare("INSERT INTO Persons (PersonID, LastName, FirstName, Address, City) VALUES (?, ?, ?, ?, ?)");//参数绑定$stmt->bind_param("issss", $PersonID, $LastName, $FirstName, $Address, $City);//循环绑定数据foreach ($persons as $person) {$PersonID = $person['PersonID'];$LastName = $person['LastName'];$FirstName = $person['FirstName'];$Address = $person['Address'];$City = $person['City'];$stmt->execute();}//开启事务处理$mysqli->begin_transaction();//执行SQL语句mysqli_query($mysqli,"INSERT INTO Persons (PersonID, LastName, FirstName, Address, City)VALUES (1,'Doe','John','456 Park Avenue','New York')");//commit提交$mysqli->commit();$mysqli->close();

mysqli与mysql的优缺点

mysqli相对于mysql扩展来说,优缺点分别如下:

  • 支持面向对象和基于过程,易用性高;
  • 支持mysqli->prepare()预处理SQL语句,可以有效防止SQL注入;
  • 支持MySQLi批处理;
  • 支持事务处理,可以保证SQL操作的原子性;

然而,mysqli的一点不足之处就是不支持php4及更早版本,此外,mysqli在一些新特性上被认为是MYSQLI扩展开发的新标准,官方不会再继续维护和更新mysql扩展。

总结

mysqli是mysql扩展的新版,支持事务处理和面向对象,而mysql则是php早期的数据库扩展。mysqli受到php社区的推荐和支持,支持较多新特性,相比mysql扩展是更值得推荐使用的数据库扩展之一。当然由于历史原因或其他原因使用mysql也是可以的,但需要注意一些常见的SQL注入、事务处理等问题。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

钉钉会议对方说话听不到声音

钉钉会议对方说话听不到声音的原因及解决方法如下:1、如果媒体音量调节到最小,那么钉钉会议时对方说话就听不到声音,这时可以把媒体音量调节到合适的大小,这样就可以听到对方说话的声音了。2、如果把钉钉会议的...

为什么购买了爱奇艺会员用不了

以爱奇艺11.8.6为例,购买了爱奇艺会员用不了的原因:1、网络不稳定。更换一个较为顺畅的网络。2、会员账号错误。再次确认爱奇艺VIP会员名。3、若以上方法不行,可以联系客服解决。北京爱奇艺科技有限公...

闪送一直不接单怎么办

如果是急件,在闪送派送人员不足的情况下,不一定能保证派送员半小时内上门取件,但只要有人接单,速度就会很快,如果时间有点晚没人接单的话,还可以适当的加点小费,提高接单的几率。闪送是北京同城必应科技有限公...

python直接降采样

在Python中,如果你需要处理大型数据集,那么直接降采样是一种非常重要的技术。在采样时,我们可以根据需求从大量的数据中选择一部分进行处理,以加快程序运行速度并降低硬件负载。那么Python如何实现直...

在拼多多上买东西会被微信好友看到吗

在拼多多上买东西如果开通了拼小圈功能,那么微信好友就可以看见。如果没有开通拼小圈功能,那么微信好友是看不到的。拼多多是国内主流的手机购物APP,是一家专注于C2B拼团的第三方社交电商平台,成立于201...

Java输出流和输入流实验报告

Java是一种广泛应用于企业级开发和互联网领域的编程语言,在Java中流(Stream)是一个至关重要的概念。流用于在Java程序中传输数据,Java提供了两种主要的流类型:输入流和输出流,分别用于从...