表单上传数据至数据库

首先我们需要创建一个可以录入数据的表单,我们将其命名为“表单验证.php”,这个php将要实现的功能位将用户输入的数据保存下来,并传给另一个负责上传数据的php文件——“表单上传.php”。
接下来是“表单验证.php”的完整代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>表单验证</title>
<style>.error {color:#FF0000;}
</style>
</head><body><?php//定义变量并默认设置为空值$nameErr=$emailErr=$genderErr=$websiteErr="";$name=$email=$gender=$comment=$website="";if($_SERVER["REQUEST_METHOD"]=="POST"){if(empty($_POST["name"]))//如果姓名为空{$nameErr="姓名是必须的";}else{$nameErr=test_input($_POST["name"]);//检测名字是否只包含字母和空格if(!preg_match("/^[a-zA-Z]*$/",$name)){$nameErr="名字不能只包含字母和空格";}}if(empty($_POST["email"])){$emailErr="邮箱是必须的";}else{$email=test_input($_POST["email"]);//检测邮箱是否合法if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)){$emailErr="邮箱非法";}}if(empty($_POST["website"])){$website="";}else{$website=test_input($_POST["website"]);//检测URL地址是否合法if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)){$websiteErr="URL非法";}}if(empty($_POST["comment"]))//个人说明{$comment="";}else{$comment=test_input($_POST["comment"]);}if(empty($_POST["gender"])){$genderErr="性别是必要的";}else{$gender=test_input($_POST["gender"]);}}function test_input($data){$data=trim($data);$data=stripslashes($data);$data=htmlspecialchars($data);return $data;}?><h1>表单验证:</h1><p><span class="error">*星号红色表示必需字段。</span></p><form method ="POST" action="表单上传.php">姓名:<input type = "text" name = "name" value = "<?php echo $name;?>"><span class = "error">*<?php echo $emailErr;?></span><br><br>邮箱:<input type = "text" name = "email" value = "<?php echo $email;?>"><span class = "error">*<?php echo $emailErr;?></span><br><br>网址:<input type = "text" name = "website" value="<?php echo $website;?>"><span class = "error">*<?php echo $websiteErr;?></span><br><br>说明:<textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea><br><br>性别:<input type = "radio" name = "gender" <?php if(isset($gender) && $gender == "male") echo "checked";?> value = "male">男<input type = "radio" name = "gender" <?php if(isset($gender) && $gender == "female") echo "checked";?> value = "female">女<span class = "error">*<?php echo $genderErr;?></span><br><br><input type="submit" name="submit" value="提交验证"></form>
</body>
</html>

接下来我将对代码中的部分内容进行说明:

  • 函数test_input()的作用
  • 表单验证action详细说明

1、function test_input()

该函数的目的是为了对用户输入的信息进行修正和对系统进行保护。

  • trim()函数是用于去掉字符串两边的空格。
  • stripslashes()函数是用于去掉字符串中的反斜杠。
  • htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。

目的:
当我们使用 htmlspecialchars() 函数时,在用户尝试提交以下文本域:

<script>location.href('http://www.baidu.com')</script>

该代码将不会被执行,因为它会被保存为HTML转义代码,如下所示:

<script>location.href(‘http://www.w3cschool.cn’)</script>

以上代码是安全的,可以正常在页面显示或者插入邮件中。

2、对表单中action的说明

我之前的博客里曾经上传过另一个版本的表单,这个表单就是根据之前上传的旧表单进行修改而来的,其主要的差别就在于action上。

旧表单的action是这么写的:

<form method ="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

而新表单是这么写的:

<form method ="POST" action="表单上传.php">

我在这里将表单重新定向,旧表单将上传上去的数据重新返回到自己,而新表单则将上传的数据传到“表单上传.php”这个文件当中,那么“表单上传.php”实现了什么功能呢?

下面是“表单上传.php”的全部代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<?php$conn = mysqli_connect("localhost","root","123456");//三个参数分别是数据库的地址,管理员名称和管理员密码if(!$conn){echo "数据库连接失败! : ".mysqli_error($conn)."<br>";//mysqli_error()函数用于返回错误详细内容}$sql_create_database = "CREATE DATABASE list";//创建一个数据库,将其命名为listif(mysqli_query($conn,$sql_create_database)){echo "数据库创建成功!"."<br>"."<br>";}else{echo "数据库创建失败! : ".mysqli_error($conn)."<br>";}$sql_select_database = "USE list";if(mysqli_query($conn,$sql_select_database))//数据库创建完成后我们还需要切换使用这个数据库list{}else{echo "数据库切换失败! : ".mysqli_error($conn)."<br>";}$sql_create_table = "CREATE TABLE list(name varchar(30) not null,email varchar(50) not null,website varchar(100),comment varchar(100),gender varchar(20))";//接下来创建数据表,有五个内容,分别对应了表单上传的五项数据if(mysqli_query($conn,$sql_create_table)){}else{echo "数据表创建失败! : ".mysqli_error($conn)."<br>";}?><?phpsession_start();//这个函数有什么用我也不知道,我在别的博客看到有这个函数,所以也加上了嘻嘻$name=$_POST["name"];//这五行代码就是将上传的数据放到五个新的变量里面$email=$_POST["email"];$website=$_POST["website"];$comment=$_POST["comment"];$gender=$_POST["gender"];        $sql_insert_data = "INSERT INTO list(name,email,website,comment,gender) VALUES('{$name}','{$email}','{$website}','{$comment}','{$gender}')";//实现数据的插入if(mysqli_query($conn,$sql_insert_data)){echo "数据插入成功!";}else{echo "数据插入失败! : ".mysqli_error($conn);}?>//并且在下面输出插入的详细内容<?phpecho "<h2>输入内容如下:</h2>";echo $name;echo "<br>";echo $email;echo "<br>";echo $website;echo "<br>";echo $comment;echo "<br>";echo $gender;mysqli_close($conn);//最后断开连接?>
<body>
</body>
</html>

注释已经写得非常详细了,相信大家都能看懂。

最后附上成功输出的效果:


数据库和数据表之所以创建失败是因为我之前调试代码的时候已经创建好了。

所以出现了database exists的错误,不用理他,系统还是可以正常运行的。


忙活了一天,也算是有所收获,不过这个界面太难看了,所以我打算再去看看html css和js的书,看看能不能把这个界面美化美化。

所以我现在算是入门了吗?(笑)

【PHP】如何将表单数据上传至数据库相关推荐

  1. extjs4 学习笔记------表单数据上传

    extjs 表单数据上传 js代码 Ext.onReady(function(ite) {// 所有的操作定义在函数showform中var showform = function() {var ad ...

  2. 前后端交互总结2:使用PHP进行表单数据上传与更新

    1:使用PHP进行表单上传 1.1 form表单的数据收集 HTML页面: 代码解释:核心模块是form的属性: --提交方式 : method="post" --指定 name ...

  3. 大前端涉猎之前后端交互总结2:使用PHP进行表单数据上传与更新

    1:使用PHP进行表单上传 1.1 form表单的数据收集 HTML页面: 代码解释:核心模块是form的属性: --提交方式 :  method="post" --指定 name ...

  4. fileUpload实现普通表单和file图片上传到数据库

    fileUpload实现普通表单和file图片上传到数据库 效果图: 实现 jsp:页面 servelt:控制器 service:逻辑操作 dao:数据库操作 domain:javaBean类 首先需 ...

  5. Qt——记录:http表单格式上传文件到七牛云和阿里云

    环境:windows10 版本:Qt 5.15.2 工具:Qt Creator 背景:通过http表单格式上传文件,兼容阿里云和七牛云. 一.记录问题:上传文件到阿里云 问题1:ErrorCode: ...

  6. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  7. vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)

    今日份主题 Spring Boot文件上传(Form表单和Ajax方式) 在Spring Boot中,和文件上传的主要和MultipartResolver接口有关,他有两个实现类 StandardSe ...

  8. Android-腾讯bugly符号表管理,上传so符号表、mapping符号表

    Android-腾讯bugly符号表管理,上传so符号表.mapping符号表 mac端运行记录 准备参数 在腾讯bugly官网下载符号表管理工具 使用符号表管理工具上传 注意事项: 更多其他页面-自 ...

  9. 保姆级别SpringBoot接入又拍云实现表单文件上传手册

    一.背景 本来打算使用七牛云进行文件上传的,由于自己一直没有实名认证(需要上传手持身份证就很烦),导致现在想用的时候用不了.另外自己所在的公司用的是又拍云,就试着看看又拍云能不能用,结果就有了这篇文章 ...

最新文章

  1. java 文件写入 读取_JAVA文件的两种读取方法和三种写入方法
  2. (c语言)和与积的运算第三篇
  3. Pytorch基础(十)——优化器(SGD,Adagrad,RMSprop,Adam,LBFGS等)
  4. PyTorch 系列 | 数据加载和预处理教程
  5. 【Python】处理 from sklearn.externals import joblib 报错问题
  6. 苹果说:没错,我就是故意让旧 iPhone 变慢的!
  7. c语言 随机漫步,随机漫步理论
  8. bzoj3159: 决战
  9. 幼儿园管理云平台众多,只有一家与众不同
  10. android如何使用代码截屏,android实现截屏功能代码
  11. 逢看必会的三子棋小游戏:原来可以这么简单
  12. 安卓手机阅读器_得到电纸书阅读器到底如何,值不值得买?使用一个月后,我告诉你答案!...
  13. BuildTools下载地址
  14. Epicor 完成和关闭工单
  15. 【- Flutter 桌面篇 -】 FlutterUnit mac版闪亮登场
  16. PC安装Linux系统傻瓜式教程
  17. 等差数列java用等差公式写_等差数列
  18. CTF万里追踪——图片里的秘密
  19. pandas的行列获取/pandas iloc和loc的使用/如何获取pandas的行和列
  20. uniapp组件-Card卡片

热门文章

  1. 读书笔记之:《新生 七年就是一辈子》李笑来
  2. ThinkPHP5实现极验滑动验证码geetest功能
  3. 如何在服务器端开启X Display?
  4. 办公自动化网络全配置
  5. 什么是编程编程都是做什么的
  6. Visio标注、批注位置
  7. 扇束重建的过程(弧形探测器)
  8. 第一章  GPU虚拟化发展史
  9. 实践--天气预报应用实例
  10. python发微信语音没声音怎么回事_微信发语音没声音怎么回事?