27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
首先在php.ini中开启mysqli扩展
extension=php_mysqli.dll
开启扩展后重启服务器,就可以使用mysqli_函数了
我们通过连接数据库、操作数据库、查询数据库来了解mysqlli的使用方法:
在介绍前我们先创建news数据库并插入测试数据
drop table if exists news; create table news( id int unsigned auto_increment primary key comment '主键', title varchar(20) not null comment '标题', content text not null comment '内容', createtime int not null comment '添加时间' )engine=innodb charset=utf8 comment '新闻表'; -- 插入测试数据 insert into news values (null,'锄禾','锄禾日当午',unix_timestamp()); insert into news values (null,'草','离离原上草',unix_timestamp());
思考:时间字段可以用datetime类型,也可以使用int类型。一般用int,因为datetime占用8个字节,int占用4个字节。
相关语法:
mysqli_connect(主机IP,用户名,密码,数据库名,端口号) //如果端口号是3306可以省略 mysqli_connect_error():获取连接数据库的错误信息 mysqli_connect_errno():获取连接数据库的错误编码 mysqli_set_charset(连接对象,字符编码)
案例
<?php //连接数据库,连接成功返回连接对象 $link=@mysqli_connect('localhost','root','root','data','3306'); //var_dump($link); //object(mysqli) if(mysqli_connect_error()){ echo '错误号:'.mysqli_connect_errno(),'<br>'; //显示错误编码 echo '错误信息:'.mysqli_connect_error(); //显示错误信息 exit; } //设置字符编码 mysqli_set_charset($link,'utf8');
注:与数据库相关的编码用utf8,与页面显示相关用utf-8
通过mysqli_query()执行SQL语句
增、删、改语句执行成功返回true,失败返回false
相关语法:
mysqli_query():执行SQL语句 mysqli_insert_id():获取插入记录自动增长的ID mysqli_affected_rows():获取受影响的记录数 mysqli_error():获取执行SQL语句的错误信息 mysqli_errno():获取执行SQL语句的错误码
案例:
<?php //1、连接数据库 $link=mysqli_connect('localhost','root','root','data'); //2、设置支付编码 mysqli_set_charset($link,'utf8'); //3、执行SQL语句 //3.1 执行insert语句 /* $rs=mysqli_query($link,"insert into news values (null,'静夜思','床前明月光',unix_timestamp())"); if($rs) echo '自动增长的编号是:'.mysqli_insert_id($link); */ //3.2 执行update语句 /* $rs=mysqli_query($link,"update news set content='疑是地上霜' where id=4"); if($rs) echo '受影响的记录数是:'.mysqli_affected_rows($link); else{ echo '错误码:'.mysqli_errno($link),'<br>'; echo '错误信息:'.mysqli_error($link); } */ //3.3 执行delete语句 mysqli_query($link,"delete from news where id=5");
数据查询用select、desc、show,成功会返回结果集,失败返回false
相关语法:
mysqli_fetch_assoc():将一条数组匹配关联数组 mysqli_fetch_row():将一条记录匹配成索引数组 mysqli_fetch_array():将一条记录匹配成既有关联数组又有索引数组 mysqli_fetch_all():匹配所有记录 mysqli_num_rows():总行数 mysqli_num_fields():总记录数 mysqli_free_result():销毁结果集 mysqli_close():关闭连接
案例:
<?php //1、连接数据库 未连接上显示错误信息 $link=@mysqli_connect('localhost','root','root','data') or die('错误信息:'.mysqli_connect_error()); //2、设置字符编码 mysqli_query($link,'set names utf8'); //3、执行查询语句 $rs=mysqli_query($link,'select * from news'); //var_dump($rs); //object(mysqli_result) //4、获取对象中的数据 //4.1 将对象中的一条数据匹配成索引数组,指针下移一条 //$rows=mysqli_fetch_row($rs); //4.2 将对象中的一条数据匹配成关联数组,指针下移一条 //$rows=mysqli_fetch_assoc($rs); //4.3 将对象中的一条数据匹配成索引,关联数组,指针下移一条 //$rows=mysqli_fetch_array($rs); //4.4 总列数、总行数 //echo '总行数'.mysqli_num_rows($rs),'<br>'; //echo '总列数'.mysqli_num_fields($rs),'<br>'; //4.5 获取所有数据 //$list=mysqli_fetch_all($rs); //默认是索引数组 //$list=mysqli_fetch_all($rs,MYSQLI_NUM); //匹配成索引数组 //$list=mysqli_fetch_all($rs,MYSQLI_ASSOC); //匹配成关联数组 $list=mysqli_fetch_all($rs,MYSQLI_BOTH); //匹配成关联、索引数组 echo '<pre>'; print_r($list); //5、销毁结果集 mysqli_free_result($rs); //6、关闭连接 mysqli_close($link);
由于所有的操作都要连接数据库,将连接数据库的代码存放到包含文件中
步骤
1、在站点下创建inc文件夹
2、在inc下创建conn.php文件,用来连接数据库,代码就是上面连接数据库的代码
<?php //连接数据库 $link=@mysqli_connect('localhost','root','root','data') or die('错误:'.mysqli_connect_error()); mysqli_set_charset($link,'utf8');
步骤:
1、连接数据库
2、获取数据
3、遍历循环数据
<style type="text/css"> table{ width:780px; border:solid 1px #000; margin:auto; } th,td{ border:solid 1px #000; } </style> <body> <?php //1、连接数据库 require './inc/conn.php'; //2、获取数据 $rs=mysqli_query($link,'select * from news order by id desc'); //返回结果集对象 $list=mysqli_fetch_all($rs,MYSQLI_ASSOC); //将结果匹配成关联数组 ?> <table> <tr> <th>编号</th> <th>标题</th> <th>内容</th> <th>时间</th> <th>修改</th> <th>删除</th> <!--3、循环显示数据--> <?php foreach($list as $rows):?> <tr> <td><?php echo $rows['id']?></td> <td><?php echo $rows['title']?></td> <td><?php echo $rows['content']?></td> <td><?php echo date('Y-m-d H:i:s',$rows['createtime'])?></td> <td><input type="button" value="修改" onclick=""></td> <td><input type="button" value="删除" onclick=""></td> </tr> <?php endforeach;?> </tr> </table> </body>
运行结果为:
1、创建表单
2、连接数据库
3、将新闻数据写入到数据库中
入口(list.php)
<a href="./add.php">添加新闻</a>
代码实现
<body> <?php if(!empty($_POST)) { //2、连接数据库 require './inc/conn.php'; //3、插入数据 $time=time(); //获取时间戳 $sql="insert into news values (null,'{$_POST['title']}','{$_POST['content']}',$time)"; //拼接SQL语句 if(mysqli_query($link,$sql)) //执行SQL语句 header('location:./list.php'); //插入成功就跳转到list.php页面 else{ echo 'SQL语句插入失败<br>'; echo '错误码:'.mysqli_errno($link),'<br>'; echo '错误信息:'.mysqli_error($link); } } ?> <!--1、创建表单--> <form method="post" action=""> 标题: <input type="text" name="title"> <br /> <br /> 内容: <textarea name="content" rows="5" cols="30"></textarea> <br /> <br /> <input type="submit" name="button" value="提交"> </form> </body>
运行结果
步骤:
1、在list.php页面点击删除按钮,跳转到del.php页面,传递删除的id
2、在del.php页面连接数据库
3、通过id删除数据
4、删除成功后,跳转到list.php
入口(list.php)
<input type="button" value="删除" onclick="if(confirm('确定要删除吗'))location.href='./del.php?id=<?php echo $rows['id']?>'">
代码实现del.php
<?php //1、连接数据库 require './inc/conn.php'; //2、拼接SQL语句 $sql="delete from news where id={$_GET['id']}"; //3、执行SQL语句 if(mysqli_query($link,$sql)) header('location:./list.php'); else{ echo '删除失败'; }
小结:
1、一个页面是否写HTML架构,取决于是否有显示功能。
2、如果一个页面只是做业务逻辑,没有显示功能,就不需要写HTML架构,比如del.php页面
入口(list.php)
<input type="button" value="修改" onclick="location.href='edit.php?id=<?php echo $rows['id']?>'">
步骤
edit.php页面
第一步:显示修改界面
1、连接数据库
2、获取修改的数据
3、将数据显示到表单中
第二步:执行修改逻辑
1、获取新数据
2、拼接修改的SQL语句,执行修改逻辑
代码如下
<?php //连接数据库 require './inc/conn.php'; //1、获取修改的数据库 $sql="select * from news where id={$_GET['id']}"; //拼接SQL语句 $rs=mysqli_query($link,$sql); //获取修改的数据 $rows=mysqli_fetch_assoc($rs); //将修改的数据匹配成一维关联数组 //2、执行修改的逻辑 if(!empty($_POST)) { $id=$_GET['id']; //获取修改的id $title=$_POST['title']; //修改的标题 $content=$_POST['content']; //修改的内容 $sql="update news set title='$title',content='$content' where id=$id"; //拼接SQL语句 if(mysqli_query($link,$sql)) header('location:list.php'); //修改成功跳转到list.php页面 else echo '错误:'.mysqli_error($link); exit; } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <form method="post" action=""> 标题: <input type="text" name="title" value='<?php echo $rows['title']?>'> <br /> <br /> 内容: <textarea name="content" rows="5" cols="30"><?php echo $rows['content']?></textarea> <br /> <br /> <input type="submit" name="button" value="提交"> <input type="button" value="返回" onclick="location.href='list.php'"> </form> </body> </html>
运行结果
<body> <script src='./js/jquery-3.3.1.min.js'></script> <script> $(document).ready(function() { $(':button:first').click(function(){ var title=$('#title').val(); var content=$('#content').val(); $.post('./add.php',{'title':title,'content':content},function(data){ if(data){ alert('添加成功'); location.href='list.php'; }else{ alert('添加失败'); } }) }) }); </script> <!--1、创建表单--> <form method="post" action=""> 标题: <input type="text" id="title"> <br /> <br /> 内容: <textarea id="content" rows="5" cols="30"></textarea> <br /> <br /> <input type="button" name="button" value="提交"> </form> </body>
add.php
<?php require './inc/conn.php'; $title=$_POST['title']; $content=$_POST['content']; $time=time(); $sql="insert into news values (null,'$title','$content',$time)"; echo mysqli_query($link,$sql)?1:0;
list.php
-- button按钮 <td><input type="button" value="删除" op='del' newsid=<?php echo $rows['id']?>></td> <script src='./js/jquery-3.3.1.min.js'></script> <script> $(document).ready(function() { $(':button').click(function(){ var tr=$(this).parents('tr'); //按钮所在的行 if($(this).attr('op')=='del'){ var id=$(this).attr('newsid'); //获取新闻的id $.post('./del.php',{'id':id},function(data){ if(data==1) tr.remove(); else alert('删除失败'); }) } }) }); </script>
del.php
<?php //1、连接数据库 require './inc/conn.php'; //2、拼接SQL语句 $sql="delete from news where id={$_POST['id']}"; //3、执行SQL语句 echo mysqli_query($link,$sql)?1:0;
本站内容均为小米原创,转载请注明出处:小米技术社区>> PHP的mysqli扩展;连接数据库,操作数据库,查询数据库的方法