Php Form连接到mySql

时间:2012-12-23 17:57:09

标签: mysql

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

第1部分

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 ))

第3部分

<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>

2 个答案:

答案 0 :(得分:0)

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

PHP

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

答案 1 :(得分: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
}
?>

这绝对不是你需要做的所有事情。 你最好,至少:

  • 在客户端上输入验证
  • 在服务器端进行适当的检查,验证和清理用户输入
  • 使用预备陈述
  • 实施适当的错误处理