php mysqli mysql
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注入、事务处理等问题。
免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。