php操作mysql数据库的扩展有哪些_PHP mysql 扩展库 操作mysql数据库步骤

1、和mysql扩展库的区别:

(1   安全性、稳定性更高

(2  提供了面向对象和面向过程两种风格

2、php.ini  中的  extension=php_mysqli.dll 解除封印

3、面向对象:查询列表

#1、创建Mysql对象

$mysqli=new MySQLi("127.0.0.1","root","daomul","test");if(!$mysqli)

{die("连接失败!".$mysqli->connect_error);

}#2、操作数据库

$sql="select * from user1";$res=$mysqli->query($sql);#3、处理结果

while($row=$res->fetch_row())

{foreach($row as $key=> $val)

{echo "-- $val";

}echo "
";

}#4、关闭资源

$res->free();//释放内存

$mysqli->close();//关闭连接

?>

4、面向对象:封装类后实现

4.1 Sqliconnect.class.php

{private $mysqli;private static $host="127.0.0.1";private static $root="root";private static $password="daomul";private static $db="test";function__construct()

{$this->mysqli=new MySQLi(self::$host,self::$root,self::$password,self::$db);if(!$this->mysqli)

{die("数据库连接失败!".$this->mysqli->connect_error);

}$this->mysqli->query("set names utf8");

}//查询操作

public function excute_dql($sql)

{$res=$this->mysqli->query($sql) or die("数据查询失败".$this->mysqli->error);return $res;

}//增删改操作

public function excute_dml($sql)

{$res=$this->mysqli->query($sql) or die("数据操作失败".$this->mysqli->error);if(!$res)

{echo "数据操作失败";

}else{if($this->mysqli->affected_rows>0)

{echo "操作成功!";

}else{echo "0行数据受影响!";

}

}

}

}?>

4.2 调用页面startsqli.php

require_once "Sqliconnect.class.php";$Sqliconnect=newSqliconnect();//$sql="insert into user1(name,password,email,age) values(‘帝都‘,md5(‘gg‘),‘sd@sohu.com‘,23)";

//$sql="delete from user1 where id=11";

//$res=$Sqliconnect->excute_dml($sql);

$sql="select name from user1;";$res=$Sqliconnect->excute_dql($sql);while($row=$)$res->free();?>

5、同时执行多条数据库语句 multiQuery.php

#1、创建Mysql对象

$mysqli=new MySQLi("127.0.0.1","root","daomul","test");if(!$mysqli)

{die("连接失败!".$mysqli->connect_error);

}#2、操作数据库

$sqls="select * from user1;";$sqls.="select * from user1";#3、处理结果

if($res=$mysqli->multi_query($sqls))

{echo "211";do{//从mysqli连续取出第一个结果集

$result=$mysqli->store_result();//显示mysqli result对象

while($row=$result->fetch_row())

{foreach($row as $key=> $val)

{echo "-- $val";

}echo "
";

}$result->free();//及时释放当前结果集,并进入下一结果集

//判断是否有下一个结果集

if(!$mysqli->more_results())

{break;

}echo "
************新的结果集**************";

}while($mysqli->next_result());

}#4、关闭资源

$mysqli->close();//关闭连接

?>

6、事务控制

// 数据库 :create table account(id int primary key,balance float);

$mysqli=new MySQLi("127.0.0.1","root","daomul","test");if(!$mysqli)

{die("数据库连接失败!".$mysqli->connect_error);

}//将提交设为false

$mysqli->autocommit(false);$sql1="update account set balance=balance+1 where id=1;";//没错的语句

$sql2="update accounterror2 set balance=balance-1 where id=2";//有错的语句

$res1=$mysqli->query($sql1);$res2=$mysqli->query($sql2);if(!$res1||!$res2)

{//回滚:其中一个不成功即回滚不提交

echo "有错,回滚,请重新提交!";$mysqli->rollback();//die("操作失败!".$mysqli->error);

}else{//所有均成功则提交

echo "所有提交成功!";$mysqli->commit();

}$mysqli->close();/*1、 start transaction; 开启事务

2、svaepoint a; 做保存点

3、执行操作1;

4、 svaepoint b;

5、执行操作2;

...

6、rollback to a/b; 回滚或者是提交

7、commit

事务控制特点acid 原子性/一致性/隔离性/持久性*/

?>

7、预处理技术

主要在连接和编译过程精简,还可以SQL防止注入

7.1 预编译插入多个数据

#1、创建mysqli对象

$mysqli=new MySQLi("127.0.0.1","root","daomul","test");if(!$mysqli)

{die("数据库连接失败!".$mysqli->connect_error);

}#2、创建预编译对象

$sql="insert into user1(name,password,email,age) values(?,?,?,?);";//暂时不赋值,用问号代替

$stmt=$mysqli->prepare($sql) or die($mysqli->error);/********************************可重复执行时需要的代码start*********************************/

#3、绑定参数

$name=‘小明5‘;$password=‘34f‘;$email=‘ssd@qq.com‘;$age=‘1‘;#4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b

$stmt->bind_param("sssi",$name,$password,$email,$age);#5、执行代码(返回布尔类型)

$flag=$stmt->execute();/********************************可重复执行时需要的代码 end************************************/

#6、结果以及释放

if(!$flag)

{die("操作失败".$stmt->error);

}else{echo "操作成功!";

}$mysqli->close();?>

7.2 预编译查询多个数据

#1、创建mysqli对象

$mysqli=new MySQLi("127.0.0.1","root","daomul","test");if(!$mysqli)

{die("数据库连接失败!".$mysqli->connect_error);

}/********************************可重复执行时需要的代码 start*******************************/

#2、创建预编译对象

$sql="select id,name,email from user1 where id>?;";//id,name,email和后面的结果集bind_result()对应

$stmt=$mysqli->prepare($sql) or die($mysqli->error);#3、绑定参数

$id=5;#4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b

$stmt->bind_param("i",$id);//绑定参数

$stmt->bind_result($id,$name,$email);//绑定结果集

#5、执行代码(返回布尔类型)

$stmt->execute();#6、取出结果集显示

while($stmt->fetch())

{echo "
$id--$name--$email";

}/********************************可重复执行时需要的代码 end*******************************/

#7、结果以及释放

//释放结果

$stmt->free_result();//关闭预编译语句

$stmt->close();//关闭数据库连接

$mysqli->close();?>

8、其他函数

(1获取行数和列数 num_rows field_count

(2 获取结果集的一列 :表头 例如$result=$mysqli->query();$result->fetch_field();

(3取出数据$row=$result->fetch_row(); //获得每一行数据

再通过foreach($row as $val){} 取出每一个数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值