PHP数据库连接mysql与mysqli对比分析


Posted in PHP onJanuary 04, 2016

一、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(对象方式):

<pre name="code" class="php">$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与mysqli举例

1、mysql

<span style="font-size:14px;">$con=mysql_connect($dbhostip,$username,$userpassword); 
$db = mysql_select_db($dbdatabasename,$con); 
//执行语句 
$qres=mysql_query("SELECT id,GoodsName FROM user"); 
//提取一条数据 
$row=mysql_fetch_row($result); 
//mysql_fetch_row只能提取出查询结果的第一条记录 
//提取多条记录 
$reslist = array(); 
$i=0; 
while($row = mysql_fetch_row($res)){ 
  $reslist[$i] = $row; 
  $i++; 
 } 
mysql_close($con); 
</span> 

//mysql_fetch_row  提取的结果是没有查询中的字段名了(也就是没有键id,GoodsName,只有值)



//mysql_fetch_assoc 提取的结果有键值


//mysql_fetch_array提取的结果有键值,是前面两种的综合

在mysql_connect()、mysql_select_db()等函数之前使用@(错误控制运算符),可以忽略掉系统产生的错误信息,然后我们用die()来自定义错误信息;
对于mysql_query()函数的返回值,如果执行的语句有返回值(如SELECT、SHOW、DESCRIBE等),则返回相应数据(成功时)或FALSE(失败时);如果执行的语句没有返回值(如DELETE、DROP、INSERT、UPDATE等),则返回TRUE(成功时)或FALSE(失败时)。

2、mysqli

$db=new mysqli($dbhostip,$username,$userpassword,$dbdatabasename); 
  
if(mysqli_connect_error()){  
  
echo 'Could not connect to database.';  
  
exit; 
  
} 
  
$result=$db->query("SELECT id,GoodsName FROM user"); 
  
$row=$result->fetch_row();

五、php中mysqli用法举例

<?php 
  $variable = $_POST['variable']; //Post从表单中提取变量 
  if(!$variable) //如果变量为空,输出错误信息并退出 
  { 
    echo 'You hava not entered search details.Please go back and try again.'; 
    exit; 
  } 
  if(!get_magic_quotes_gpc()) //该函数用于判断get_magic_quotes_gpc是否开启,get_magic_quotes_gpc参数是用于确定是否将从post,get,cookie过来的数据增加转义字符和从数据库出来的数据去掉转义字符 
  { 
    $variable = addlashes($variable);//在特殊文本字符前增加转义字符 
    //stripslashes()用于在去掉转义字符 
  } 
  $localhost = 'hostname';//主机名 
  $user = 'username';//用户名 
  $pwd = 'password';//密码 
  $db = 'databasename';// 
  @$link = new mysqli($localhost,$user,$pwd,$db);//连接数据库 
  if(mysqli_connect_errno())//如果数据库连接失败,输出错误信息并退出 
  { 
    echo 'Error: Coulid not connect to database. Please try again later.'; 
    exit; 
  } 
  $query = "SELECT row from table where some situation";//查询语句 
  $result = $link -> query($query);//查询并返回结果 
  $num_results = $result -> num_rows; //结果行数 
  echo "<p>Number of row found: ". $num_results ."</p>";//输出行数 
   
  for($i = 0;$i < $num_results;$i++)//循环输出每组元素 
  { 
    $row = $result -> fetch_assoc();//提取元素,一次一行,fetch_assoc()提取出的元素,有属性以及值 
    echo stripslashes($row['attributename']);//按属性(键)提取值 
    echo "<br/>"; 
  } 
  $result -> free();//释放内存 
  $link -> close();//断开数据库连接 
?>

以上就是关于PHP数据库连接mysql与mysqli的区别与用法,希望对大家的学习有所帮助。

PHP 相关文章推荐
PHP初学者最感迷茫的问题小结
Mar 27 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
PHP 转义使用详解
Jul 15 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
yii2 url重写并隐藏index.php方法
Dec 10 PHP
php微信扫码支付 php公众号支付
Mar 24 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
Aug 07 PHP
非常重要的php正则表达式详解
Jan 04 #PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 #PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 #PHP
PHP 读取文本文件内容并分页显示
Jan 02 #PHP
php实现概率性随机抽奖代码
Jan 02 #PHP
php实现给一张图片加上水印效果
Jan 02 #PHP
前端必学之PHP语法基础
Jan 01 #PHP
You might like
第十三节 对象串行化 [13]
2006/10/09 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
spyder常用快捷键(分享)
2017/07/19 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
Python Flask框架扩展操作示例
2019/05/03 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
2016公司年会通知范文
2015/04/25 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
举起手来观后感
2015/06/09 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python