其实mysqli扩展是mysql扩展的加强版,因为历史原因,有一些老程序员擅长面向过程写法,所以PHP设计者为mysqli设计了两套方案,一套面向对象,一套面向过程,甚至一个聊本里可以混着用,不过那样很怪,下面的案例都是采用面向对象的那套方案。
案例做一个小功能吧,向数据库中插入数据。先设计一下SQL表,语句如下:
create database day1; use day1; create table user1 ( id int(6) unsigned auto_increment primary key, name varchar(20) not null, password varchar(256) not null, email varchar(80) not null, age int(128) not null ); INSERT INTO user1(name,password,email,age) VALUES('Lucia','13568','12345@.com',30);因为一会儿要插入数据,所以先插入一条,构造好后,打开数据库,查询,发现没有问题
接下来构造mysqli工具类代码如下: <?php class SqlTest{ private $mysqli; private $host="localhost"; private $user="root"; private $pass="XFAICL1314"; private $db="day1"; //初始话 public function __construct(){ $this->mysqli=new mysqli($this->host,$this->user,$this->pass,$this->db); if ($this->mysqli->connect_error){ echo "连接失败"; } $this->mysqli->query("set names utf8"); } //进行select public function execute_dql($sql){ $res=$this->mysqli->query($sql) or die($this->mysqli->error); return $res; } //进行update,insert,delete public function execute_dml($sql){ $res=$this->mysqli->query($sql) or die($this->mysqli->error); if (!$res){ return 0; }else{ if ($this->mysqli->affected_rows>0){ return 1;//成功 }else{ return 2;//没有行数收影响 } } } } ?>
下面就是前端页面了,这里我用表单向后端提交数据,代码如下:
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <center><title>添加联系人</title></center> <style type="text/css"> div{ background-color: aqua; width: 1250px; height: 500px; } div{ text-align: center; } </style> </head> <body> <div> <div> <form action="addprocess.php" method="post"> <br><br><br><br><br> 姓名:<input type="text"><br><br> 密码:<input type="password"><br><br> email:<input type="text"><br><br> 年龄:<input type="text"><br><br> <input type="submit" value="提交"> <input type="reset" value="重置"> </form> </div> </div> </body> </html>效果如下图:
然后就是后端的逻辑设计了,代码如下: <?php //引入工具类 require_once 'SqlTest.class.php'; //创建实例 $SqlTest=new SqlTest(); $sql="insert into user1 (name,password,email,age) values ('$_POST[user]',md5('$_POST[password]'),'$_POST[email]','$_POST[age]')"; $res=$SqlTest->execute_dml($sql); if ($res==1){ echo "添加成功"; }else{ if ($res==0){ echo '添加失败'; }else{ echo "行数没有变化"; } } ?>
现在测试一下,我们在表单页面输入 小明,12345678,123@qq.com,25 数据,如下图:
然后提交表单,看看有没有插入到数据库中。
我们发现成功插入到数据库中如下:
关于mysqli扩展就说到这里。 MySQL批量执行SQL语句
上面简单介绍了MySQL扩展和MySQLI扩展,接下来说一说批量执行sql语句。
先提一个需求,如果我们像数据库批量添加用户,如果按照之前的办法一条一条的发送sql语句来处理,这样很占用资源,并且效率低。所以采用批量执行sql语句的方式。接下来用两个案例来讲解,因为增加,修改,删除操作返回的是布尔值,而查询操作返回的是结果集,所以分来来处理比较好。