mysql 与 mysqli的区别

时间:2023-03-09 02:47:39
mysql 与 mysqli的区别
mysqli.dll是PHP对mysql新特性的一个扩展支持。在PHP5中可以在php.ini中加载
mysql后面的i,指improved, interface, ingenious, incompatible or incomplete(改扩展仍在开发中,因为MYSQL4。1和MYSQL5都没有正式推出尚在开发中,新的特性没有完全实现) mysqli想实现的目标具体有: -更简单的维护
-更好的兼容性
-向后兼容 mysql(指PHP中的模块)发展到现在显得比较凌乱,有必要重新做下整理。同时,有必要跟上MYSQL(DBMS)的发展步伐,加入新的特性的支持,以及适应MYSQL(DBMS)以后的版本。所以诞生了mysqli.dll mysqli.dll的特性: -可以和mysql.dll一样的方式使用
-支持OO接口,简简单单调用
-支持MYSQL4。1引入的新特性
-通过mysqli_init() 等相关函数,可以设置高级连接选项

其次,mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。具体查看 http://cn.php.net/mysqli

应用比较多的地方是 mysqli的事务。

1.mysql是非持继连接函数而mysqli是永远连接函数
也就是说mysql每次链接都会打开一个连接的进程

,而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销
  有 些朋友在编程的时候,使用 new mysqli('localhost', usenamer', 'password', 'databasename');总是报 错,Fatal error: Class 'mysqli' not found in d:...
  mysqli类不是php自带的吗?
  不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去
 
2.
mysqli连接是永久连接,而mysql是非永久连接。
mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。
mysqli连接:一直都只使用同一个进程。
好处:这样就可以很大程度的减轻服务器端压力。

当然,如果mysql也需要永久连接的话,就可以使用mysql_pconnect()这个函数

mysqli的面向过程的使用:

$conn = mysqli_connect('localhost', 'root', '', 'db_test') or ('error');
$sql = "select * from db_table";
$query = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($query)){
echo $row['title'];
}

mysqli的面向对象的使用:

$conn = new mysqli('localhost', 'root', '', 'db_test');
$sql = "select * from db_table";
$query = $conn->query($sql);
while($row = $query->fetch_array()){
echo $row['title'];
}