完成一个表单(HTML,PHP,SQL)
HTML部分
表单框架及样式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>表单</title>
<style>
body{
font-size: 17px;
}
.form{
margin: 20% 38%;
}
input{
display: block;
border-radius: 7px;
margin-top: 15px;
width: 300px;
height: 30px;
background-color: rgba(255,255,255,0.5);
}
</style>
</head>
<body>
<div class="form">
<form action="index.php" method="POST">
<lable for="username">用户名</lable>
<input type="text" name="username">
<lable for="password">密码</lable>
<input type="password" name="password">
<br/>
<input type="reset" name="reset" value="重置">
<input type="submit" name="submit" value="提交">
</form>
</div>
</body>
</html>
其他补充
表单中的几个重要属性:
- name:参数名
- action:表单提交到的位置
- method:参数的传递方式post/get
- 通过 get 或者 post 方法都可以获得 Form 的数据,两者主要区别在于以下几方面:
Get:
URL 改变,在URL 里显示 HTML Form 参数的 name/value 值。
只适合有少量参数的 HTML Form,因为 URL 长度有字符限制,不能无限长。
涉及安全性的信息,比如用户密码,不能用 get,因为会在 URL 上显示,不安全。
Post:
URL 不改变,不在 URL 里显示 HTML Form 的数据。
Form 提交的信息没有长度限制。
涉及安全性的信息,如用户密码,应采用 post 方式。
< input >
- type:输入元素的类型
- name:该输入的名称
- value:默认值
- placeholder
SQL部分(数据库的建立)
SQL 是用于访问和处理数据库的标准的计算机语言。
基本操作
- 进入数据库
mysql -u root //无密码
mysql -u root -p密码 //有密码
- 建库
create database 'databasename';(数据库名)
create database if not exists databasename; //避免重复建库
use database //使用已有数据库`` - 建表
create table tablename;(表名)
- 增
insert into 表名称 '(列名称)values(值);
- 删
delete from 表名称 where 列名称=值;
- 改
update 表名称 set 列名称=新值 where 列名称=值;
- 查
show databases; //显示已有数据库
desc tablename; //显示当前表内信息;
select 列名称(*) from 表名称 (where 列名称=值); //查某列数据(全部)
mysql -u root
show databases;
create database if not exists px190416;
show databases;
use px190416;
create table if not exists users(
username varchar(255) not null,
password char(20),
);
desc users;
insert into users(usernamee,password)values('ming','1');
insert into users(usernamee,password)values('hong','22');
insert into users(usernamee,password)values('gang','333');
select * from users;
update users set password='666666' where usesrname='gang';
select * from users;
delete from users where username='gang';
select * from users;
select password from users;
select password from users where username='ming';
其他补充
- varchar:输入需要多少空间就开多少,但运行速度比char慢
- AUTO_INCREMENT:自增设置,可以让一个指定数据自动加1(用来记数),但是delete一条语句后,其后面的该值保持原样不会自动减1
- PRIMARY KEY:主键设置,作为唯一标识符
- not null:该数据不能为空
PHP部分(连接数据库)
PHP连接操作数据库
连接数据库
$conn = new mysqli('地址','用户名','密码',('数据库'));
可以用var_dump()函数查看$conn的详细内容
mysqli_query()
执行一条mysql查询函数
$result = mysqli_query('连接标识','sql语句'');
//会显示sql语句的数据类型,长度……
mysqli_fetch()
解析,将sql语句以字符串输出
函数 | 功能 |
---|---|
mysqli_fetch_all() | 从结果集中取得所有行作为关联数组,或数字数组,或二者兼有。 |
mysqli_fetch_assoc() | 从结果集中取得一行作为关联数组。 |
mysqli_fetch_array() | 从结果集中取得一行作为关联数组,或数字数组,或二者兼有。 |
mysqli_fetch_row() | 从结果集中取得一行,并作为枚举数组返回。 |
//连接数据库标准模板
<?php
error_reporting(E_ALL &~ E_NOTICE);
//PHP连接数据库,成功后返回连接标识$conn,数据类型为对象
$address = 'localhost'; //127.0.0.1-数据库所在本机地址
$user = 'root';
$pass = '';
if($conn = new mysqli($address,$user,$pass)){};
else
{
echo $conn->error; //返回最近的一个错误
}
$database = 'px190416';
if($conn->query($select))
{
TODO; //暂时没想好干嘛
}
else
{
echo $conn->error;
}
?>
<?php
include("conn.php"); //引入连接数据库标准模板
//用超全局变量的方法获得表单传递的参数
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysqli_query($conn,"select * from users where username = '$username' and password = '$password' ");
var_dump($result);
$result_arr = mysqli_fetch_assoc($result);//解析成数组形式,每次只解析一行
var_dump($result_arr);
while($result_arr = mysqli_fetch_assoc($result))//将整个数据库解析出
{
var_dump($result_arr);
}
if($result_arr == null)
{
echo '密码错误';
}
else
{
echo '欢迎你';
}
?>
- error_reporting()函数:规定了PHP的报错级别
若不加此函数,则会在访问时有Notice提示
(也可以用错误运算控制符@解决报错问题:@放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。) - mysqli_query()函数:用来对数据库执行sql语句
- mysqli_fetch_assoc()函数:用来将查询到的结果(数据类型为对象)解析成减值数组的形式;每次只解析一行,使用while
表单提交到HTML页面相当于带着参数重新访问页面,所以最后我们看到的结果页面输入框中没有数据,是因为上次填写的数据已经被刷新(重新访问)掉了