mysql、mysqli、pdo三种方式操作数据库

1、说明

    根据PHP的版本,有两个或三个用于访问MySQL数据库的PHP API。 PHP 5用户可以选择不推荐使用的mysql扩展名,mysqli或PDO_MySQL。 PHP 7删除了mysql扩展,只留下后两个选项。


    mysql_query()仅对SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句 语句返回一个 resource,如果查询出现错误则返回false。

    对于其他类型的SQL语句,比如INSERT,UPDATE,DELETE,DROP,mysql_query()在执行成功时返回 TRUE,出错时返回 FALSE。

    返回的结果资源应该传递给 mysql_fetch_array() 和其他函数来处理结果表,取出返回的数据。

    假定查询成功,可以调用 mysql_num_rows() 来查看对应于 SELECT 语句返回了多少行,或者调用 mysql_affected_rows()来查看对应于 DELETE,INSERT,REPLACE 或 UPDATE语句影响到了多少行。

    如果没有权限访问查询语句中引用的表时,mysql_query() 也会返回 false。


2、mysqli扩展相对于MySQL的优势:

    --- 基于面向过程和面向对象的优势

    --- 支持预处理语句

    ---支持事务


    MySQLi扩展的安装:(widows环境下)

    ---配置php配置文件,开启php_mysqli.dll扩展

    ---配置extension_dir= 'F:/software/wamp/bin/php/php5.5.12/ext/'   (‘ext目录所在位置’)

    ---重新启动服务器


3、验证MySQLi扩展是否开启:

    1、phpinfo();

    2、var_dump(extension_loaded('mysqli'));     //检测扩展是否已经加载

    3、print_r(get_loaded_extensions());      //得到当前已经开启的扩展


4、PDO与mysql的性能比较:pdo连接时间明显比mysql慢

header("Content-type: text/html; charset=utf-8"); 
//1.通过PDO连接数据库
$pStartTime=microtime(true);
for($i=1;$i<=100;$i++){
	$pdo=new PDO('mysql:host=localhost;dbname=test','root','');
}
$pEndTime=microtime(true);
$res1=$pEndTime-$pStartTime;

//2.通过MySQL连接数据库
$mStartTime=microtime(true);
for($i=1;$i<=100;$i++){
	@mysql_connect('localhost','root','');
	mysql_select_db('test');
}
$mEndTime=microtime(true);
$res2=$mEndTime-$mStartTime;
echo $res1,'<br/>',$res2;
echo '<hr/>';
if($res1>$res2){
	echo 'PDO连接数据库时间是MySQL的'.round($res1/$res2).'倍';
}else{
	echo 'MySQL连接数据库时间是PDO的'.round($res2/$res1).'倍';
}

冷暖自知一抹茶ck

冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论