MYSQL
安装了mysql之后systemctl start mariadb启动mysql数据库
初始化数据库:mysql_secure_installation
操作数据库时很多情况都需要root密码,这个root是数据库的root而不是linux的root
删掉匿名用户
一路默认回车就行了
登录数据库:
History:查看历史命令,不建议直接写-p密码,会被写入history内
mysql是数据库管理工具,show database;就能显示所有数据库
Use 数据库名,就能进入数据库
进入数据库后,show tables;查看表
数据库执行成功为query ok,执行失败跳error报告
更改表实例:
上述是对列(字段)进行增删改查,下面是对表中数据进行增删改查
插入多行语句就是insert into 表名 (列,列) values(值,值),(值,值)·
Select * from 表 where 字段=
Desc 表 查看数据表的结构 describe,查看表数据就是select * form 表
Columns列、字段
删除表或者删除列是drop,删除数据是delete
PHP 连接MYSQL,对数据库执行操作:
下面是对这五个步骤的函数详解,注意,在PHP中实现对MYSQL的操作类似于在PHP中实现对文件的操作,需要连接,操作,关闭等固定操作
Mysql_select_db(数据库名,登录句柄)文件登录句柄也就是登录时传的参数,比如实例。Resource link_identifier就是表明自己登录的shell(终端),也就是登录句柄。因为可以在不同终端同时登录数据库,所以要表明终端证明身份
Mysql_fetch_array()是获取第一行的内容,也存在指针,类似fgets()函数
实例:
比如该图的文件句柄就是$conn
数据库现在是这个:
根据结果可以看出输出方式为混合数组,可以用索引方式查值,也可以根据关联数组的方式查值
根据结果还能看出只输出了一行数据,而且数据库也存在指针,所以要以循环的方式输出全部结果
Var dump输出数组
$result得到一个结果集,mysql_fetch_array从结果集中获取信息得到一个row数组,再用var dump或print_r输出数组
SQL语句不论大小写,对大小写不敏感
PHP文件包含
include使用方法:include ‘’ 使用相对路径包含
此文件包含相当于直接把代码复制粘贴
Include_once()会判断在此之前指定的文件是否已经被包含过了,如果是,那就不包含,如果没包含过才能正常执行包含
PHP留言板优化 增加mysql数据库
AUTO_INCREMENT PRIMARY KEY就是数字自增的意思,id值随留言先后自增长
tinytext是文本类型,数据库储存文本的类型
制作出来的you表如下:
前端的html代码就是制作表单再上传至对应的php文件
后端的Php代码如下:
如果还要在当前页面对留言进行展示,就需要在前端的html文件中添加mysql_fetch_array()的文件对留言的数据库进行遍历
很明显我们可以发现前端和后端有重复的代码,就是登录数据库连接表的过程,在这里将此过程单独提出来用文件包含使用
综上,当前制作留言板的顺序如下:
先制作前端的HTML表单,并将表单数据提交至后端Php
PHP将获得的表单数据储存至Mysql中,在此之前要在mysql数据库中创建好对应的库和表
php的数据储存就是先判断表单是否为空,再用$_post获取前端的对应值,如何用insert语句储存值,注意连接和关闭数据库
还要在前端将留言的数据展示出来,就在前面的html表单后面加循环遍历数据库,再把重复代码用文件包含修饰一下就可以了
会话控制
http协议具有无状态性,不会保存用户id或者之前的请求等数据
COOKIE:
客户端第一次请求服务器时,服务器的响应包内会发送一个set-cookie,一定时间内再次访问时,客户端会自动带上set-cookie的值,这时被称为cookie
expire的值通常为time()+360024或者3600小时,表示cookie的有效时间
也可以直接写过期时间
Time()函数是当前时间
_GET,$_POST也是
使用cookie制作一个登录页面:
Isset:isset函数是检测变量是否设置。
格式:bool isset ( mixed var [, mixed var [, ...]] )
返回值:
若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
和empty的用法相反,empty为空返回ture,isset不为空返回ture
If(isset($_POST[‘submit’]))就是为了判断提交的submit的值是不是以POST的方式提交的,因为请求页面是以GET的方式请求,如果直接判断submit的值,会在每一次打开页面是执行,而判断POST则是每次以POST请求提交表单才会执行
Header()跳转至···页面
JS里有获取本地cookie的函数:document.cookie,在浏览器的控制台上查询
登陆后的页面:
要编写一个退出登录的logout.php页面,用到了删除cookie的手法:
Setcookie(“username”,$_COOKIE[‘username’],time()-1);
Header(‘Location:login.php’);
解释为什么要登录页跳转才能访问index.php:因为cookie值必须要为登录的USERNAME对应的cookie值,如果不是会直接跳回
综上,写一个登录页面需要:一个跳转页面,一个登录页面,一个退出登录的PHP
在linux的firefox F12的设置里面勾选storage即可开启存储功能,可以直接管理本地cookie
Session:
session的默认周期是20天,和cookie不同的是,session储存在服务器,给客户端的是session_id。每个session都会在服务器生成session文件
PHP的配置文件:/etc/php.ini里有个session_save_path是session的储存位置
Session_id也是在cookie里查看
开始会话:session_start(); 和setcookie()的注意一样
注册会话变量:(接收session值)$_SESSION[‘XXX’]=XXX;
使用会话变量:$_SESSION;
注销会话:
较cookie的使用多了一步注销会话,且每次使用都需要开启会话,其他全部一致
session文件,s代表string,意思是三个字符
和cookie不同的是,在本地删除cookie就销毁了,但是session在服务器还有备份,所以要用退出会话的方式删除本地session_id和服务器的session
此代码能删除SESSION,PHP默认的session是基于cookie的,要删干净还要用setcookie(‘PHPSESSION’,$_COOKIE[‘PHPSESSION’],time()-1]删除cookie
再次优化留言板
目的:达到管理账号的目的,没有账号的要先注册,访问留言板先要登录,能够退出登录
要有登录页面、主页、退出登录、注册页面、数据库连接
先创建数据库,有两个数据库,一个装登录用户信息,一个装留言信息
最后一版:
需要有管理员账号
user是普通用户账号表,admin是管理员用户账号表
管理员后台,要实现对普通用户留言的修改和显示留言信息
混合编码,在PHP中插入一段纯正的HTML代码,先闭合<?Php,在加入<?Php,再闭合需要使用的}
未改正的action.php:
Delete,update,insert三条语句返回结果true or false,select返回结果集
执行后不弹窗,因为先在本页弹窗后马上就跳回了首页
改正后:
Exit();在退出之前打印··,打印后直接退出,不执行后续程序
Self.location=””; 是JS代码,在跳转指定网页后本句的代码依然执行
删除留言,GET方式传参
这段代码是为表单文本框进行赋值,value是一个值。这里只是利用php代码获取id的值,echo输出出来,并赋值给value
实践得出的易错点:
Document.write是js语言,要写在内
在HTML中制造超链接:<input name="注册" type="button" id="btn1" title="登注册" value="注册" onclick="location.href='链接写这里'">
定义对象通常是要先定义一个类,而类是函数形式,而不是var声明