Heim  >  Artikel  >  Datenbank  >  php mysql mysqli区别比较详解

php mysql mysqli区别比较详解

WBOY
WBOYOriginal
2016-06-07 17:51:32896Durchsuche

文章今天来分析一下在php中的两种数据库连接方法mysql,mysqli以前我都是用mysql很少用mysqli,原因mysqli是php默认配置中是没有开启的下面我们来看它们之间各自的优点和不足吧。

是非持继连接函数而mysqli是永远连接函数。也就是说

mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销

有些朋友在编程的时候,使用new mysqli('localhost', usenamer', 'password', 'databasename');总是报错,Fatal error: Class 'mysqli' not found in d:...
mysqli类不是自带的吗?
不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去


实例

mysql.dll(可以理解为函数式的方式):

 

 代码如下 复制代码

  $conn = mysql_connect(‘localhost’, ‘user’, ‘password’); //连接mysql
  mysql__db(‘data_base’); //选择数据库
  
  $result = mysql_query(‘select * from data_base’);//这里有第二个可选参数,指定打开的连接

  $row = mysql_fetch_row( $result ) ) //为了简单,这里只取一行数据
  echo $row[0]; //输出第一个字段的值

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

 

mysqli也有过程式的方式,只不过开始贯以mysqli的前缀,其他都差不多。如果mysqli以过程式的方式操作的话,有些函数必须指定资源,比如说 mysqli_query(资源标识,SQL语句),并且资源标识的参数是放在前面的,而mysql_query(SQL语句,’可选’)的资源标识是放在后面的,并且可以不指定,它默认是上一个打开的连接或资源。


实例

mysqli.dll(对象方式):

 代码如下 复制代码
  $conn = new mysqli(‘localhost’, ‘user’, ‘password’,'data_base’);
  //这里的连接是new出来的,最后一个参数是直接指定数据库,不用mysql_select_db()了
  //也可以构造时候不指定,然后 $conn -> select_db(‘data_base’)
  $result = $conn -> query( ‘select * from data_base’ );
  $row = $result -> fetch_row();  //取一行数据
  echo row[0]; //输出第一个字段的值

-可以和mysql.dll一样的方式使用;

-支持OO接口,简简单单调用;

-支持MYSQL4.引入的新特性;

-通过mysqli_init() 等相关函数,可以设置高级连接选项

一般安装时选择MySQL,因为有的服务器不支持MySQLi。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn