写在前面: JS 与用户进行通讯的时候,可以用 prompt 和 alert 。我们的服务器上面的 PHP 程序是如何得到用户的数据呢?用户的数据要干预程序的运行。就得通过 get 和 post 方法。
一、GET方法
有时候在浏览器的地址栏观察网址,发现网络的地址是这样的http://lixin/com?k=v&k=v
? 后面的部分,不会影响我们访问哪个网页,这后面的 k=v 的数据,就是给后台语言看的。对于前台意义不大。
借用实例来讲解:
<?php
$b = $_GET["name"];
echo $b;
?>
请求结果:
get:参数都体现在url上,可以用于跳转网页、翻页,简单查询,get 只能接收 2M 以下的内容,所以有只能输入 2048k 字节, 有局限性,另外由于内容是可见的,安全性就下降了,
form表单有两个重要的属性:
● method属性:提交表单的方法,是get还是post。如果写了get的话,那么提交表单的时候,就会通过URL地址的?来传递参数。
● action属性:处理表单的php程序
● name属性:获取ID用的。
二、数据库写入
昨天学习的 SQL 语句中的查询,检索所有数据库条目
SELECT * FROM xuesheng;
如果想检索某一条条目用WHERE子句:
SELECT * FROM xuesheng WHERE xingming = “小明”;
今天要学习的是写入,就是“增”
INSERT INTO xuesheng(xingming,nianling,qqhao) VALUES ('考拉',20,2435345)
公式:
INSERT INTO 表名(字段1,字段2,字段3) VALUES (值1,值2,值3)
三、模拟表单接收和数据库的写入
- 创建一个空白的数据库,表中只有字段,没有内容。
- HTML 页面构建
- 连接数据库,使用GET方法,获取填写内容,进行数据库写入
-
空白数据库
创建数据库
创建完成不进行内容填写。
2.HTML页面和填写内容
页面和填写内容<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单提交和数据库写入模拟</title>
</head>
<body>
<div>
<form action="index.php" method="get">
学习进度:
<label><input type="radio" name="name1" value="非常快">非常快</label>
<label><input type="radio" name="name1" value="一般">一般</label>
<label><input type="radio" name="name1" value="很慢">很慢</label>
<br>
学习状态:
<label><input type="radio" name="name2" value="非常好">非常好</label>
<label><input type="radio" name="name2" value="很好">很好</label>
<label><input type="radio" name="name2" value="很差">很差</label>
<br>
课程进度:
<label><input type="radio" name="name3" value="太快了">太快了</label>
<label><input type="radio" name="name3" value="正好">正好</label>
<label><input type="radio" name="name3" value="太慢了">太慢了</label>
<br>
课堂建议:
<br>
<textarea name="name4" id="" cols="35" rows="5"></textarea>
<br>
<input type="submit" value="提交">
</form>
</div>
</body>
</html>
- 连接数据库,使用GET方法,获取填写内容,进行数据库写入
<?php
//通过GET请求获取填写内容
$name1 = $_GET["name1"];
$name3 = $_GET["name3"];
$name2 = $_GET["name2"];
$name4 = $_GET["name4"];
//数据库的连接
$ccon = mysql_connect("localhost","root","root");
mysql_select_db("students class info",$ccon);
//数据库的写入 其中mysql_query是执行的意思!
$result = mysql_query("INSERT INTO students(xuexijingdu,xuexichuantai,kechengjindu,jianyi) VALUES('{$name1}','{$name2}','{$name3}','{$name4}')");
if($result ==1){
echo "表单成功接收!";
}else{
echo "错误提交请重试!";
}
//关闭数据库
mysql_close($ccon);
?>
-
实验结果
页面内容填写完成点击提交。
提交完成
数据库信息:
接收到内容
四、数据库的线上部署
数据库的创建和表单的创建类似 sql_yog 本地的部署。
本次演示使用的我的百度云主机,因为只有一个数据库,无法另外创建一个数据库进行演示。只能从表的创建开始。
- 登陆到主机后台,进入数据库管理页面。这里的数据库管理软件是 phpMyAdmin。点击
操作
,开始创建表。
如下;
创建表 - 代码上传到服务器:
一共两个文件HTML的和PHP的。
超级无敌大坑:使用前面PHP代码上传到服务器,更改完连接数据库的地址密码等。错误!!!显示http 500 无法完成请求,加入显示具体错误的代码进行查找的!
原因:连接PHP的方法只支持到PHP5.5以下的,尴尬!!!
只能使用新方法PDO和mysqli,使用后者。
参考连接:MySQL 插入数据 | 菜鸟教程 http://www.runoob.com/mysql/mysql-insert-query.html
<?php
//通过GET请求获取填写内容
$name1 = $_GET["name1"];
$name3 = $_GET["name3"];
$name2 = $_GET["name2"];
$name4 = $_GET["name4"];
//这两行代码扔出错误的提示信息,要不然新手的我找不到原因!!!
ini_set("display_errors","On");
error_reporting(E_ALL);
//数据库的连接
$ccon = mysqli_connect("localhost","root","root");
mysqli_select_db( $ccon,"DfvhWrXgzUsreEsAbSNI");
//数据库的写入,两个参数
$result = mysqli_query($ccon,"INSERT INTO students(xuexijingdu,xuexichuantai,kechengjindu,jianyi) VALUES('{$name1}','{$name2}','{$name3}','{$name4}')");
if($result ==1){
echo "表单成功接收!";
}else{
echo "错误提交请重试!";
}
//关闭数据库
mysqli_close($ccon);
?>
就这个破玩意耽误我一下午。麻蛋!
- 访问域名:
-
点击提交会显示提交成功。数据录入成功
数据成功显示
五、POST请求
POST请求是让用户的数据传输到服务器上,而不是利用URL,而是利用HTTP request报文头。
HTTP是报文,requst、response都是以报文的形式传输的。报文的内容就是<html><body></body></html>就是页面的内容,而报文的头部携带有很多信息。
GET请求非常好产生,我们每一次输入网址打开网站都是一次GET请求,GET请求利用的是URL。
POST请求非常难于自己产生,必须借助表单。
POSt请求的好处:
- 安全,不会通过网址来暴露我们的表单;
- 内容不限量,post请求是可以无限量的,表单域填多少都没有问题。
POST请求的缺点:
- 地址不可以分享,很明显 post 请求不影响URL。
鉴于GET/POST的优点、缺点对比明显,工程上:
- GET 请求通常用于检索数据库的某一个条目, 比如news.php?id=4
- POST 请求通常用于提交表单。
网友评论