mysql与mysqli区别实例解析

发布时间:2020-11-28编辑:脚本学堂
本文介绍了php编程中mysql与mysqli的区别,mysql是非持继连接函数,而mysqli是永远连接函数,感兴趣的朋友参考下。

一些关于mysql与mysqli的区别:
Mysql and Mysqli(Mysql Improved) are two library functions ( or Extension) in the PHP which is used to acces mysql database.Mysqli is the improved version of mysql which support OOPS. The mysqli extension allows you to access the functionality provided by MySQL 4.1 and above.

mysql是非持继连接函数而mysqli是永远连接函数。mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销
如果使用new mysqli('localhost', usenamer', 'password', 'databasename');总是报错,Fatal error: Class 'mysqli' not found in ...那么要检查一下mysqli是不是开启的。
mysqli类不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去。

In relation to PHP programming language, MySQL is the old database driver, and MySQLi is the Improved driver. MySQLi takes advantage of the newer features of MySQL 5. Lifted verbatim from the php.net site:

- Object-oriented interface
- Support for Prepared Statements
- Support for Multiple Statements
- Support for Transactions
- Enhanced debugging capabilities
- Embedded server support

You have the choice of using mysql, mysqli, or PDO essentially.

If you're simply looking for a relational database, you need look no further than MySQL, though there are many options available. You can use DBD, Postgres, MySQL, MSSQL, sqlite, etc etc etc...

HTH
Source(s):
http://www.php.net/manual/en/mysqli.over

mysqli的用法:
 

复制代码 代码示例:
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
 

mysql的用法:
 

复制代码 代码示例:
$link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');

在处理中文乱码问题的时候,我是在$link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');之后设置连接字符集:
 

复制代码 代码示例:
mysql_query("set names utf8");【注】:不能写成utf-8


然后再设置所操作的数据库
 

复制代码 代码示例:
mysql_select_db("my_db");


而使用mysqli的时候,数据库名是作为mysqli构造方法的一个参数,所以这时候设置连接字符集不起作用了(或许是我用的方法不对,试过各种方法,使用mysqli的时候中文一直就是乱码的)。

下面举一些例子,深入学习下mysqli的用法。

例1,mysqli的面向过程的使用:
 

复制代码 代码示例:
$conn = mysqli_connect('localhost', 'root', '123', 'db_test') or ('error');
$sql = "select * from db_table";
$query = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($query)){
echo $row['title'];
}

例2,mysqli的面向对象的使用:
 

复制代码 代码示例:
$conn = mysqli('localhost', 'root', '123', 'db_test');
$sql = "select * from db_table";
$query = $conn->query($sql);
while($row = $query->fetch_array()){
echo $row['title'];
}

mysql_pconnect打开的连接不会关闭(即使调用mysql_close也不会关闭,因为对其无效),
类似于连接缓冲池,如果下次有来自于同一个机器的同一个用户名
对同一个数据库的连接,php会自动使用上次已经建立的连接,而不需要再重新建立一个。
优点:是省去了每次与数据库建立连接的开销,
缺点:是需要浪费一些内存,占用一些连接,
所以,如果用户访问量大的时候会出现错误,要把mysql的max_connections参数改大一点, 或者使用mysql_connect()就解决问题。

首先两个函数都是用来处理DB的。

首先, mysqli 连接是永久连接,而mysql是非永久连接。
mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力。
其次,mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。具体查看 http://cn.php.net/mysqli

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

例子:
 

复制代码 代码示例:
<?php
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//开始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
$mysqli->commit();
echo 'ok';
}else{
echo 'err';
$mysqli->rollback();
}