PHP-连接数据库

1.2 连接数据库

在这里插入图片描述

通过PHP做MySQL的客户端

1.2.1 开启mysqli扩展

在php.ini中开启mysqli扩展

extension=php_mysqli.dll
  • 开启扩展后重启服务器,就可以使用mysqli_函数了,

在这里插入图片描述

1.2.2 连接数据库

创建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

1.3 操作数据

1.3.1 数据操作语句

通过mysqli_query()执行SQL语句

增、删、改语句执行成功返回true,失败返回false

<?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");

用到的函数

mysqli_query():执行SQL语句
mysqli_insert_id():获取插入记录自动增长的ID
mysqli_affected_rows():获取受影响的记录数
mysqli_error():获取执行SQL语句的错误信息
mysqli_errno():获取执行SQL语句的错误码

1.3.2 数据查询语句

数据查询用select、desc、show,成功会返回结果集,失败返回false

<?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);

使用的函数

mysqli_fetch_assoc():将一条数组匹配关联数组
mysqli_fetch_row():将一条记录匹配成索引数组
mysqli_fetch_array():将一条记录匹配成既有关联数组又有索引数组
mysqli_fetch_all():匹配所有记录
mysqli_num_rows():总行数
mysqli_num_fields():总记录数
mysqli_free_result():销毁结果集
mysqli_close():关闭连接

1.4 新闻模块实战

1.4.1 包含文件

由于所有的操作都要连接数据库,将连接数据库的代码存放到包含文件中

步骤

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.4.2 显示新闻

步骤:

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="修改" οnclick=""></td><td><input type="button" value="删除" οnclick=""></td></tr><?php endforeach;?></tr>
</table>
</body>

运行结果

在这里插入图片描述

1.4.3 添加新闻

步骤:

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.4.4 删除新闻

步骤:

1、在list.php页面点击删除按钮,跳转到del.php页面,传递删除的id

2、在del.php页面连接数据库

3、通过id删除数据

4、删除成功后,跳转到list.php

入口(list.php)

<input type="button" value="删除" οnclick="if(confirm('确定要删除吗'))location.href='./del.php?id=<?php echo $rows['id']?>'">
  • 1

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页面

在这里插入图片描述

1.4.5 修改新闻

入口(list.php)

<input type="button" value="修改" οnclick="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页面elseecho '错误:'.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="返回" οnclick="location.href='list.php'">
</form>
</body>
</html>

运行结果

在这里插入图片描述

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python模块初始与time、datetime及random

模块初始与time、datetime及random 模块初始 模块的概念&#xff08;本质为一个py文件&#xff09; python模块可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段&#xff0c;这些自我包含的有组织 的代码段就是模块&#xff0c;模块在物理形式上表…

PHP-面向对象编程教程

1.2 面向对象介绍 1.2.1 介绍 面向对象是一个编程思想。编程思想有面向过程和面向对象 面向过程&#xff1a;编程思路集中的是过程上 面向对象&#xff1a;编程思路集中在参与的对象 以去饭馆吃饭为例&#xff1a; ​ 面向过程&#xff1a;点菜——做菜——上菜——吃饭—…

Java生鲜电商平台-统一异常处理及架构实战

Java生鲜电商平台-统一异常处理及架构实战 补充说明&#xff1a;本文讲得比较细&#xff0c;所以篇幅较长。 请认真读完&#xff0c;希望读完后能对统一异常处理有一个清晰的认识。 背景 软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&…

VScode新建自定义模板快捷方式

VS新建vue文件的自定义模板 在使用vscode开发的时候&#xff0c;新建vue文件是不可或缺的&#xff0c;但是VSCode并没有vue文件的初始化模板&#xff0c;这个需要自定义模板。 我们可以使用vscode的snippets在新建.vue 文件后轻松获得一套模板。 具体步骤 打开VSCode -> …

cookbook_数据结构和算法

1.1将数据分解为单独的变量list_a [1,2,3,4,5,6,7,8,9] a,b,c,d,e,f,g,h,i list_a print(a,b,c,d,e,f,g,h,i) #使用相等数量的参数来接收_,b,c,d,e,f,g,h,_ list_a print(b,c,d,e,f,g,h) #不要的数据使用一个没有用的变量接收 View Code1.2从任意长度的可迭代对象中分解元素…

机器学习概览

什么是机器学习&#xff1f; 广义概念&#xff1a; 机器学习是让计算机具有学习的能力&#xff0c;无需明确的编程 —— 亚瑟萨缪尔&#xff0c;1959 工程概念&#xff1a; 计算机程序利用经验 E 学习任务 T&#xff0c;性能是 P&#xff0c;如果针对任务 T 的性能 P 随着经验 …

SQL on and 和 on where 的区别

on and 和 on where 的 区别 在使用 left join 时, on and 和 on where 会有区别&#xff1b;1. on的条件是在连接生成临时表时使用的条件,以左表为基准 ,不管on中的条件真否,都会返回左表中的记录  on 后面 and 都是对右表进行筛选 2.where是全部连接完后&#xff0c;对临时…

Java生鲜电商平台-缓存架构实战

Java生鲜电商平台-缓存架构实战 说明&#xff1a;在Java生鲜电商中&#xff0c;缓存起到了非常重要的作用&#xff0c;目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个key瞬间被数万甚至十万的并发请求打爆。 2.大value 某个k…

Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构

Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构 概述 毫无疑问&#xff0c;Spring Cloud是目前微服务架构领域的翘楚&#xff0c;无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面&#xff0c;其底层的很多原理&#xf…

aspx,ascx和ashx使用小结

做asp.net开发的对.aspx,.ascx和.ashx都不会陌生。关于它们&#xff0c;网上有很多文章介绍。“纸上得来终觉浅&#xff0c;绝知此事要躬行”&#xff0c;下面自己总结一下做个笔记。 1、.aspx Web窗体设计页面。Web窗体页由两部分组成&#xff1a;视觉元素&#xff08;html、服…

css3 卡片hover3D效果

鼠标hover卡片 向上翻转&#xff0c;看简易代码 <!DOCTYPE html> <html> <head><title>3D Flip Card hover effects</title><style type"text/css">* {margin: 0;padding: 0;font-family: consolas;box-sizing: border-box;}bo…

Java生鲜电商平台-商城后台架构与原型图实战

Java生鲜电商平台-商城后台架构与原型图实战 说明&#xff1a;生鲜电商平台的运营平台&#xff0c;其中需要很多的功能进行管理。目前把架构与原型图实战分享给大家&#xff0c;希望对大家有用. 仪表盘/首页&#xff0c;简单统计&#xff0c;报表页&#xff0c;运营快捷口。实际…

python软件开发规范

软件开发规范 什么是软件开发规范&#xff1f; 好的设计项目目录结构&#xff0c;就和编码风格一样&#xff0c;是每个程序员都有的风格&#xff0c;但是在流水化标准化作业过程中&#xff0c;个性和风格是 不被鼓励的。如果你去维护一个非常不好读的项目&#xff0c;虽然实现逻…

vue3 echarts5 graph关系图谱 点击图例节点消失线不消失重复生成问题

const myChart ref(null);const myCharts ref(null);onMounted(() > {// 这种会导致线仍然存在 重复生成myCharts.value echarts.init(myChart.value);myCharts.value.setOption(option);});return {myChart,myCharts,}; 现象&#xff1a;如下图1 点击图例类目2&#xf…

Vue3 VSCode新建项目报错The template root requires exactly one element.

1.首先我们点击左侧第四个图标插件2.输入框搜索vetur插件3.点击设置图标&#xff0c;再点击扩展设置4.搜素vetur>validation>template&#xff0c;取消vetur>validation>template的勾选 然后就不会报错了

Java生鲜电商平台-电商支付流程架构实战

Java生鲜电商平台-电商支付流程架构实战 说明&#xff1a;我一直秉承的就是接地气的业务架构实战。我的文章都有一个这样的核心。 1. 业务场景 2. 解决问题。 3.代码实现。 4.代码重构。 5.总结与复盘。 6.缺点与防范 一、场景描述 想必大家都曾遇到过这个问题&#xff0c;在电…

vue2项目使用codemirror插件实现代码编辑器功能

1、使用npm安装依赖 npm install --save codemirror 2、在页面中放入如下代码 <template><textarea ref"mycode" class"codesql" v-model"code" style"height:200px;width:600px;"></textarea> </template>…

vue3中websocket用法

1.0 认识 websocket #1.0.1 什么是 websocket 和 http 协议类似&#xff0c;websocket 也是是一个网络通信协议&#xff0c;是用来满足前后端数据通信的。 #1.0.2 websocket 相比于 HTTP 的优势 HTTP 协议&#xff1a;客户端与服务器建立通信连接之后&#xff0c;服务器端只…

Scanner类+Random

引用数据类型的使用 数据类型 变量名 new 数据类型(); 变量名.方法名(); import java.util.Scanner; publicclass ScannerDemo01 { publicstaticvoid main(String[] args) { //创建Scanner引用类型的变量 Scanner sc new Scanner(System.in); //获取数字 System.out.print…

webpack入门进阶调优第一章

1.1何为Webpack webpack是开源的JS模块打包工具 核心功能是解决模块之间的依赖&#xff0c;吧哥哥模块按照特定的规则和顺序组织在一起&#xff0c;最终合并为一个JS文件。这个过程叫模块打包 1.2为何需要Webpack 1.2.1何为模块 在设计程序结构时&#xff0c;更好的组织方…