php mysqli mysql

admin3个月前软件教程34

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注入、事务处理等问题。

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

相关文章

教育APP软件开发优势有哪些

教育培训APP开发定制公司市场竞争同质化,在传统营销模式下,市场竞争逐渐趋于同质化,行业正在寻求差异化营销方式。利润空间小,在传统的教学模式下,教育培训企业需要投入大量的教学设备、人力成本,降低了利润...

哔哩哔哩复核中啥意思

哔哩哔哩(又称B站)复核的意思就是对稿件的编目信息进行再次核查。B站投稿视频的状态说明如下:1、审核中视频内容正在审核中。管理员需审核视频内容,针对违规情况反馈处理理由。部分视频可能由于视频内容涉及广...

轻颜相机vip怎么关闭自动续费

以支付宝为例,轻颜相机vip关闭自动续费可以:1、在支付宝界面点击我并选择设置。 2、找到支付设置。 3、选择免密支付/自动扣款。 4、选择轻颜相机。 5、点击关闭服务即可。 支付宝(中国)网络技术有...

soul名字可以改几次

soul没有改名字的功能,用户在每一个帖子里留言,系统都会随机给个名字,所以用户不需要担心自己的名字不好听这个问题。Soul是一款基于心灵的社交App,隶属于上海任意门科技有限公司。用户可以在上面真实...

顺风车怎么加入条件

以滴滴顺风车为例,其加入的条件是:1、驾驶车辆一年以上,车龄6年以内,行驶里程10万公里以内。男性的年龄要求22-60周岁,女性年龄要求20-50周岁,按照自然月计算。2、专车需要三年以上的驾龄,快车...

美图秀秀字体改不了

美图秀秀字体改不了可能是因为在清理手机内存的时候把美图秀秀的字体数据清理掉了,建议卸载美图秀秀重新下载试试。美图秀秀是2008年10月8日由厦门美图科技有限公司研发、推出的一款免费图片处理的软件,有i...