腾讯云618限量抢购
  1. PHP基础教程
  2. PHP+MySQL数据库教程

ThinkPHP add 方法添加表单数据

最后更新:2011-02-16 21:43阅读:82114

添加表单数据

下面来看一下将表单数据提交并写入数据表的例子。

创建表单

进入模板目录 TPLdefaultIndex(如果 Index 文件夹不存在,则创建一个)。Index 文件夹对应存放 Index 模块(IndexAction.class.php)的模板文件,不能随意命名。

在 Index 文件夹内创建一个名为 form.html 的文件,文件采用 UTF-8 编码,内容如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>表单数据测试</title>
</head>
<body>
<form action="__URL__/insert2" method="post">
<p>用户名: <input type="text" name="username" /></p>
<p>密 码: <input type="password" name="password" /></p>
<p>电子邮箱: <input type="text" name="email" /></p>
<p><input type="submit" value=" 提交 " /></p>
</form>
</body>
</html>

__URL__ 是 ThinkPHP 模板中的特殊字符串,在输出模板之前系统会自动将其替换成当前模块的 URL 地址。此处是替换成 Myapp/index.php/Index ,具体参见《ThinkPHP 模板特殊字符串替换》,所以该例子中 action="__URL__/insert2" 表示向当前模块的 insert2 操作提交数据。

提示:由于只是简单的输出 form.html 页面而没有其他逻辑操作,因此不需要在 Index 模块内创建对应的操作。

访问该页面:http://127.0.0.1/html/Myapp/index.php/Index/form,可以看到刚才创建的表单。

创建写入数据操作

在 IndexAction 控制器(Lib/Action/IndexAction.class.php)里,添加 insert2() 操作:

public function insert2(){
    header("Content-Type:text/html; charset=utf-8");
    $Dao = M("User");

    // 构建写入的数据数组
    $data["username"] = $_POST["username"];
    $data["password"] = md5($_POST["password"];);
    $data["email"] = $_POST["email"];	
    $data["regdate"] = time();

    // 写入数据
    if($lastInsId = $Dao->add($data)){
        echo "插入数据 id 为:$lastInsId";
    } else {
        $this->error('数据写入错误!');
    }
}

在表单页面填写数据并提交,ThinkPHP 中同样是通过 $_POST/$_GET 变量来接受表单发送的数据。

提示

对于提交的表单数据,ThinkPHP 在数据写入数据表之前,做了 addslashes() 操作,对特殊字符进行转义。如果不想将特殊字符做转义,可以在写入数据库之前 addslashes()。

参考阅读

  1. ThinkPHP 添加数据 add 方法
  2. ThinkPHP 表单数据智能写入 create 方法
  3. ThinkPHP 模板
  4. ThinkPHP 快捷方法之 M 方法:高效实例化一个数据模型。
  5. PHP 字符串转义 addslashes 与 stripslashes 函数

本章节内容共分 3 部分:
  1. 1. ThinkPHP 添加数据 add 方法
  2. 2. ThinkPHP add 方法添加表单数据
  3. 3. ThinkPHP 表单数据智能写入 create 方法
腾讯云618限量抢购