php mysql mysqli区别比较详解

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编译进去

实例

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

 

 代码如下 复制代码

  $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]; //输出第一个字段的值

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。

时间: 2024-09-20 00:00:40

php mysql mysqli区别比较详解的相关文章

PHP4与MySQL数据库操作函数详解

mysql|函数|数据|数据库|详解 说PHP就不能不提MySQL,而要讲MySQL,那么PHP也是必然要被提起.PHP的迅速崛起,离不开MySQL,而MySQL的广泛应用,也与PHP休戚相关. 下面详细分析PHP4中与MySQL相关操作的函数(共32个,开头都为mysql_): <1>. 连接数据库服务器(database server)的函数(2个): (1).mysql_connect() 格式:int mysql_connect(string [hostname] [:port],st

Spring整合MyBatis(Maven+MySQL)图文教程详解_java

一. 使用Maven创建一个Web项目 为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项目并使用MyBatis3.X,第一.二点内容多数是回顾过去的内容 . 1.2.点击"File"->"New"->"Other"->输入"Maven",新建一个"Maven Project",如下图所示: 1.2.请勾选"Create a si

MySQL常用时间函数详解(推荐)_Mysql

2.6 DATE_SUB/DATE_ADD DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式.expr 参数是您希望添加的时间间隔. SELECT id FROM my_table WHERE create_time >= date_sub(now(), INTERVAL 3 HOUR) AND create_time < now(); Type 值 •MICROSECOND •SECOND •MINUTE •HOUR •DAY •WEEK

MySQL常用聚合函数详解_Mysql

一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回指定列的最大值 四.SUM SUM(col) 返回指定列的所有值之和 五.GROUP_CONCAT GROUP_CONCAT([DISTINCT] expr [,expr ...]              [ORDER BY {unsigned_integer | col_name | expr}

JS与Ajax Get和Post在使用上的区别实例详解_javascript技巧

get和post方法最大的不同在于: 1.get方法传值参数在url里面,而post参数放send里面 2.post方法必须加上 xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 下面实例可以看get方法 xmlHttp.open("GET","for.php?text="+url,true); 在post里面表现为:

php mysql insert into 结合详解及实例代码_Mysql

php mysql insert into 结合详解 ySQL INSERT INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好. 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新记录. 语法 INSERT INTO table_name VALUES (value1, value2,....) 您还可以规定希望在其中插入数据的列: INSERT INTO table_name (column1, column2,...) VALUES (valu

jQuery中text() val()和html()的区别实例详解_jquery

简单的说:html()和text()的区别主要在于是否包含标签.而val()针对的是表单元素. 但是有时还是不是那么太清晰. html(),val(),text()都分为有参和无参. 举例说明它们的不同之处: html()在没有参数的情况下,取得第一个匹配元素的内容.必须要注意的是,即使匹配多个,也只能取得匹配的第一个元素. 如: <body> <p>你选中这段文字后,看看它们的文本颜色和背景色,就能明白::selection的作用.</p> <h3>选中下

Mysql Limit 分页查询优化详解_Mysql

select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select * from table LIMIT 0,5; #返回前5行 我们来写分页 物理分页 select * from table LIMIT (当前页-1)*每页显示条数,每页显示条数; MySQL之Limit简单优化.md 同样是取90000条后100条记录,传统方式还是改造方式? 传统方式是先取了前90001条记录,取其中最

Mysql my.ini 配置文件详解_Mysql

Mysql my.ini 配置文件详解 #BEGIN CONFIG INFO #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 #TYPE: SYSTEM #END CONFIG INFO # # 此mysql配置文件例子针对4G内存 # 主要使用INNODB #处理复杂队列并且连接数量较少的mysql服务器 # # 将此文件复制到/etc/my.cnf 作为全局设置, # mysql-data-dir/my.cnf 作为服务器指定设置 # (@loc