-3

我有 CREATE TABLE 查询、INSERT INTO 自动显示“expiry_date”列和我网站上的 FORM。我是新手,所以我不知道如何制作表格,尤其是“expiry_date”字段将数据发送到我的数据库。
请告诉我如何将“Expiry_date”表单字段连接到 SQL QUERY。我有 3 个部分向您展示我已经完成的工作。

第一部分

SQL查询:

CREATE TABLE `expirydate_table` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `firstname` VARCHAR( 45 ) NOT NULL ,
    `lastname` VARCHAR( 45 ) NOT NULL ,
    `email` VARCHAR( 45 ) NOT NULL ,
    `password` VARCHAR( 12 ) NOT NULL ,
    `signup_date` TIMESTAMP ON UPDATE 
    CURRENT_TIMESTAMP DEFAULT 
    CURRENT_TIMESTAMP NOT NULL ,
    `expiry_date` DATE NOT NULL ,
    PRIMARY KEY ( `id` ) ,
    UNIQUE (
    `email`
    )
    ) TYPE = MYISAM CHARACTER SET utf8 COLLATE 

    utf8_unicode_ci;

第二部分

INSERT INTO `expirydate_table` ( `id` , `firstname` , `lastname` , `email` , `password` , `signup_date` , `expiry_date` ) 
VALUES (
'', 'pp', 'wiraj', 'pp@hotmail.com', 'test2009', NOW( ) , DATE_ADD(CURDATE( ) , INTERVAL 30 DAY ))

第三部分

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table align="center">
  <tr valign="baseline">
    <td nowrap align="right">Firstname:</td>
    <td><input type="text" name="firstname" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Lastname:</td>
    <td><input type="text" name="lastname" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Email:</td>
    <td><input type="text" name="email" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Password:</td>
    <td><input type="text" name="password" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Signup_date:</td>
    <td><input type="text" name="signup_date" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Expiry_date:</td>
    <td><input name="expiry_date" type="text" size="32"></td>
  </tr>
  
  <tr valign="baseline">
    <td nowrap align="right">&nbsp;</td>
    <td><input type="submit" value="Register"></td>
  </tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
4

2 回答 2

0

您是否正在考虑执行从表单提交的查询?如果是这样,您应该使用

PHP

您可以使用 $_POST['nameofform'] 访问帖子数据,其中 'nameofform' 是表单的名称并且您应该使用 php 的扩展名来执行 mysql 查询mysqli或 PDO 扩展名

于 2012-12-23T18:20:23.960 回答
0

首先,您可能可以在代码中处理您的日期,而不是从客户端发送它们。最重要的是,您不想signup_date在每次更新时都进行更改。所以你需要稍微调整一下你的表模式:

CREATE TABLE `expirydate_table` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `firstname` VARCHAR( 45 ) NOT NULL ,
    `lastname` VARCHAR( 45 ) NOT NULL ,
    `email` VARCHAR( 45 ) NOT NULL ,
    `password` VARCHAR( 12 ) NOT NULL ,
    `signup_date` DATETIME NOT NULL,
    `expiry_date` DATETIME NOT NULL,
    PRIMARY KEY (`id`) ,
    UNIQUE (`email`)
)

话虽如此,您可以摆脱表单中的字段signup_upexpiry_date

然后您需要创建一个处理提交值的操作 php 脚本。它可能看起来像这样:

<?php
//make sure that everything has been submitted
if (isset($_POST['firstname']) &&
    isset($_POST['lastname']) &&
    isset($_POST['email']) &&
    isset($_POST['password'])) {

    //do your cleanup and checks here
    $firstname = trim($_POST['firstname']);
    $lastname = trim($_POST['lastname']);
    $email = trim($_POST['email']);
    $password = $_POST['password'];

    //construct an INSERT statement
    $qry = 'INSERT INTO `expirydate_table` (`firstname` , `lastname` , `email` , `password` , `signup_date` , `expiry_date` ) VALUES ('; 

    $qry .= '"' . $firstname . '", ';
    $qry .= '"' . $lastname . '", ';
    $qry .= '"' . $email . '", ';
    $qry .= '"' . $password . '", ';
    $qry .= 'NOW(), ';
    $qry .= 'DATE_ADD(NOW(), INTERVAL 30 DAY))';

    //open connection to db
    $db = new mysqli('db_host', 'db_user', 'db_pwd', 'db_name');

    //execute your INSERT statement
    if ($db->query($qry) == TRUE) {     
        if ($db->insert_id) {
            $id = $db->insert_id;
        }
    } else {
        //add your error handling here
    }

    //render your page, use $id if you need to
}
?>

这绝对不是你需要做的一切。你最好,至少:

  • 在客户端进行输入验证
  • 在服务器端进行适当的检查、验证和清理用户输入
  • 使用准备好的语句
  • 实施适当的错误处理
于 2012-12-23T19:16:07.313 回答