php mysqli mysql

admin3个月前软件教程37

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

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

相关文章

拼多多签到金提现后有效期是多久

拼多多签到金提现后有效期是三天,也就是说提现出来的现金券3天内要消费掉,不消费就过期没有了。要注意在兑换红包界面上没有说红包的有效期,但实际上有效期是三天。拼多多于2015年9月正式成立时间,它是一家...

在线问诊app开发方案

在线问诊APP开发能够通过使用这个app进行在线咨询,不需要再花费钱去医院问诊,也不怕自己吃的药不合适,通过app既可以询问医生。下面具体分析下在线问诊APP开发方案,希望大家开发好APP。1.app...

设备异常是什么意思

以微光为例,提示设备异常的意思如下:1、可能是账号多次违规导致,如果没有违规,可以联系客服解决。2、可能是软件和手机的操作系统不兼容,可以升级软件解决。3、可能是软件出现bug,需要等待开发者修复。微...

腾讯会议突然没有声音

腾讯会议突然没有声音的原因可能是因为电脑没有打开声音,或者声卡驱动有问题导致的。基于腾讯21年音视频通讯经验,腾讯会议提供一站式云会议解决方案,高清流畅的会议品质让您随时随地体验沉浸式会议协作。腾讯会...

拼多多怎么筛选发货地

拼多多平台没有筛选发货地的功能。而且拼多多商家的发货地址不能随意修改,但如果是管理平常的发货地址是可以的,可以在拼多多卖家平台进行管理。2019年2月,拼多多纳入MSCI。8月,拼多多(PDD.US)...

拼多多月卡可以只开一个月吗

拼多多月卡可以只开一个月,如果下月想接着开可以续费,还可以开通季卡年卡。拼多多是国内主流的手机购物APP,是一家专注于C2B拼团的第三方社交电商平台,成立于2015年9月,用户通过发起和朋友、家人、邻...