写在前面: JS 与用户进行通讯的时候,可以用 prompt 和 alert 。我们的服务器上面的 PHP 程序是如何得到用户的数据呢?用户的数据要干预程序的运行。就得通过 get 和 post 方法。
一、GET方法
有时候在浏览器的地址栏观察网址,发现网络的地址是这样的http://lixin/com?k=v&k=v
? 后面的部分,不会影响我们访问哪个网页,这后面的 k=v 的数据,就是给后台语言看的。对于前台意义不大。
借用实例来讲解:
$b = $_GET["name"];
echo $b;
?>
请求结果:
GET请求
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页面和填写内容
页面和填写内容
表单提交和数据库写入模拟学习进度:
非常快
一般
很慢
学习状态:
非常好
很好
很差
课程进度:
太快了
正好
太慢了
课堂建议:
连接数据库,使用GET方法,获取填写内容,进行数据库写入
//通过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
//通过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都是以报文的形式传输的。报文的内容就是
就是页面的内容,而报文的头部携带有很多信息。GET请求非常好产生,我们每一次输入网址打开网站都是一次GET请求,GET请求利用的是URL。
POST请求非常难于自己产生,必须借助表单。
POSt请求的好处:
安全,不会通过网址来暴露我们的表单;
内容不限量,post请求是可以无限量的,表单域填多少都没有问题。
POST请求的缺点:
地址不可以分享,很明显 post 请求不影响URL。
鉴于GET/POST的优点、缺点对比明显,工程上:
GET 请求通常用于检索数据库的某一个条目, 比如news.php?id=4
POST 请求通常用于提交表单。