当前位置:  编程技术>php

mysql与mysqli有哪些区别?

    来源: 互联网  发布时间:2014-08-30

    本文导语:  在php编程中,有关mysql与mysqli的区别分析。 1,mysql是非持继连接函数而mysqli是永远连接函数 mysql每次链接都会打开一个连接的进程,而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些php教程中会使用 new my...

在php编程中,有关mysql与mysqli的区别分析。

1,mysql是非持继连接函数而mysqli是永远连接函数
mysql每次链接都会打开一个连接的进程,而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销
有些php教程中会使用 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()这个函数

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_connect与mysql_pconnect与mysqli_connect:

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

简单的来说MySQL_pconnect是用来在php与MySQL间建立一条持续连接,
一般php的执行模式是脚本开始执行时初始化所有资源, 脚本运行结束后释放所有资源.
而MySQL_pconnect的方式则不这样, MySQL_connect每次都是重新通过tcp 等
跟sql服务器建立关系, 每次连接都是要消耗不少服务器资源的.
 
使用pconnect时, 有请求连接MySQL时, php会检查是否之前有条相同的连接(以相同的用户名密码连接到同一个MySQL服务器)已经建立,
如果有的话就直接使用这条连接, 值得注意的是这个相同的连接的概念是对进程来说的,
不同的进程连接 MySQL_pconnect建立会建立起多条连接.
connect与pconnect不会带来功能的差异, 只有性能上的差别.
一般php有俩种运行模式, 一是作为cgi运行, 二是作为apache的模块运行.
作为cgi的时候connect跟pconnect没什么不同, 因为每次cgi进行运行结束后都会被销毁清理掉资源.
 
php作为apache模块方式运行时, 可以使用到数据库持续连接, 但可能会存在潜在的问题,
 
看php手册,如果你是cgi安装方式。pconnection永远也不会生效。
长连接最大的缺点就是万一一个用户锁死,当前进程就永久锁死了。
假如你在apache里的设置是进程永不销毁的话就………………
也就是说尽量使用mysql_connect,因为运行结束后会自动中断,符合编程的风格吧。
也可以使用mysql_connect和mysql_pconnect一起使用,就好像一个链接缓冲池一样,
也就是说建立一个有mysql_connect 和 mysql_pconnect的类。
当然,如果不考虑向下兼容的话,最好还是使用mysqli_connect,因为mysqli本身就是永久性连接。

php数据库连接mysql与mysqli的区别与用法

一、mysql与mysqli的概念相关:
1、mysql与mysqli都是php方面的函数集,与mysql数据库关联不大。
2、在php5版本之前,一般是用php的mysql函数去驱动mysql数据库的,比如mysql_query()的函数,属于面向过程3、在php5版本以后,增加了mysqli的函数功能,某种意义上讲,它是mysql系统函数的增强版,更稳定更高效更安全,与mysql_query()对应的有mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库

二、mysql与mysqli的区别:
1、mysql是非持继连接函数,mysql每次链接都会打开一个连接的进程。
2、mysqli是永远连接函数,mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销。mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。

三、mysql与mysqli的用法:

1:mysql(过程方式):
 

代码示例:
$conn =
mysql_connect('localhost', 'user', 'password'); //连接mysql数据库  mysql_select_db('data_base');
//选择数据库  $result =
mysql_query('select * from data_base');//第二个可选参数,指定打开的连接  $row =
mysql_fetch_row( $result ) ) //只取一行数据  echo
$row[0]; //输出第一个字段的值  

PS:mysqli以过程式的方式操作,有些函数必须指定资源,比如mysqli_query(资源标识,SQL语句),并且资源标识的参数是放在前面的,而mysql_query(SQL语句,'资源标识')的资源标识是可选的,默认值是上一个打开的连接或资源。

2、mysqli(对象方式):  
 

代码示例:
$conn = new
mysqli('localhost', 'user', 'password','data_base');  //要使用new操作符,最后一个参数是直接指定数据库  //假如构造时候不指定,那下一句需要$conn -> select_db('data_base')实现  $result =
$conn -> query( 'select * from data_base' );  $row =
$result -> fetch_row(); //取一行数据  echo
row[0]; //输出第一个字段的值

使用new mysqli('localhost', usenamer', 'password', 'databasename');会报错,提示如下:
Fatal error: Class 'mysqli' not found in ...

一般是mysqli是没有开启的,因为mysqli类不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去。

四、mysql_connect()与mysqli_connect()
1,使用mysqli,可以把数据库名称当作参数传给mysqli_connect()函数,也可以传递给mysqli的构造函数;
2,如果调用mysqli_query()或mysqli的对象查询query()方法,则连接标识是必需的。

您可能感兴趣的文章:
  • PHP5中使用MySQLi扩展的小例子
  • php mysqli和mysql区别详解
  • php mysqli类的演示例子
  • wamp打开phpmyadmin提示“缺少 mysqli 扩展。请检查 PHP 配置。”的解决方法
  • phpMyAdmin无法载入 mysqli 扩展,请检查 PHP 配置的解决方法
  • 解决:phpmyadmin缺少 mysqli 扩展。请检查 PHP 配置的问题
  • php mysqli扩展库操作mysql的例子
  • php mysqli实例 使用mysqli批量执行sql语句
  • php mysqli多个查询的例子

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程
  • 在Linux内安装了Mysql,无法进入Mysql.
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 怎样在linux终端输入mysql直接进入mysql?
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • c++中关于#include <mysql/mysql.h>的问题?
  • MySQL索引基本知识
  • mysql -u root mysql 怎么解释
  • Mysql设置查询条件(where)查询字段为NULL
  • mm.mysql那里可以下载?www.mysql.com根本下载不了。谢谢了
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • MySQL集群 MySQL Cluster


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3