将基本表单发送到数据库

时间:2013-09-01 05:17:15

标签: php html mysql sql forms

我是网络开发的新手。在这段代码中,我试图创建一个表单,其中index.php中的表单向数据库发送信息。我的list.php应显示输入的用户列表。但是,我的index.php不会将数据发送到数据库。我在phpMyAdmin中的数据库是绝对空的。我不知道我的错误在哪里。请帮忙。 //Config.php

<?php
$dbhost = 'mysql51-031.wc2.dfw1.stabletransit.com';
$dbuser = '549359_sargis';
$dbpass = '*********';
$dbname = '549359_sargis';
$table  = 'Contacts';

$connection = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
$select_db = mysql_select_db($dbname,$connection) or die(mysql_error());
?>

// index.php

<!DOCTYPE html>
<hmtl>
<head>
    <title>Dashboard</title>

    <?php include("config.php"); ?>

    <link rel="stylesheet" type="text/css" href = "style.css">

<?php

if(isset($_POST['submit']))
{
    $firstname = $_POST['firstname'];
    $lastname  = $_POST['lastname'];
    $email     = $_POST['email'];
    $phone     = $_POST['phonenumber'];

    //$date      = date('l jS \of F Y h:i:s A');

    $sql = "INSERT INTO " . $table . " (firstname, lastname, email, phone_number, timesstamp) VALUES ('$firstname' , '$lastname' , '$email' , '$phonenumber', NOW())";
    $query = mysql_query($sql);

    if (!$query)
    {
        die('Error: ' . mysql_error());
    }

}

?>


</head>

<body>
        <a href="list.php">View List</a><hr/>

<form action="index.php" method = "POST">
    <div>
        First name: <input type ='text' id='firstname' name='firstname'/><br />
        Last name: <input type = 'text' id='lastname' name='lastname'/><br />
        Email: <input type = 'text' id='email' name='email'/><br />
        Phone Number: <input type = 'text' id='phone_number' name='phonenumber'/><br />
        <input type = 'submit' value='Add' />
    </div>
</form>

</body>
</html>

3 个答案:

答案 0 :(得分:1)

假设您发布了index.php的内容,那么您的问题似乎就是将表单提交到list.php,但您的数据处理代码位于index.php

<form action="list.php" method = "POST">
             ^^^^^^^^^^

难怪您没有任何错误消息,表格中没有数据。这是因为你的代码没有被执行。

因此,请将您的数据处理代码移至list.php或制作自我提交表单,将action属性的值留空

<form action="" method = "POST">
             ^^
成功插入数据后,

并重定向到list.php

现在,如果您的timestamp类型为datetimetimestamp,则可以更改

$date = date('l jS \of F Y h:i:s A'); 

$date = date('Y-m-d h:i:s');

或更改您的查询字符串以使用MySql的构建函数NOW()CURRENT_TIMESTAMP,这是NOW()的同义词。

$sql = "INSERT INTO " . $table . " (firstname, lastname, email, phone_number, timesstamp) 
        VALUES ('$firstname', '$lastname', '$email', '$phonenumber', NOW())";

旁注:使用prepared statementsmysqli_*PDO,而不是插入查询字符串。在当前状态下,您的代码对SQL注入是开放的,并且您使用已弃用的mysql_*扩展名。

答案 1 :(得分:0)

用大括号包裹你的变量:

$sql = "INSERT INTO " . $table . " (firstname, lastname, email, 
                                    phone_number, timesstamp) VALUES 
           ('{$firstname}' , '{$lastname}' , '{$email}' , '{$phonenumber}',
           '{$date}')";
    $query = mysql_query($sql);

看看是否有帮助。

答案 2 :(得分:0)

1)name='submit'添加到表单按钮。因为if(isset($_POST['submit']))。这种情况在您的代码中始终为false

<input type='submit' name='submit' value='Add' />
                <!-- ^^^^ -->

2)您的表单操作设置为action="list.php",表单数据将提交到此文件。

确保您的数据库插入查询位于正确的文件中:list.php。这意味着您应该将if(isset($_POST['submit'])){ ... }块移至list.php或将表单操作更改为action="index.php"(当前文件)。

<form action="index.php" method="post">
         <!-- ^^^^^^^^^ -->

3)在代码顶部添加这些行以启用错误以检测发生的情况。

ini_set('display_errors',1);
error_reporting(E_ALL);

4)添加var_dump($_POST)以检查您的表单数据是否成功提交。因此输出应该是表单数据的数组。否则你就错了。

if(isset($_POST['submit'])) {
    var_dump($_POST);

5) MySQL中的日期时间格式应为YYYY-MM-DD HH:MM:SS。 使用MySQL方法而不是$date来获取当前时间戳CURRENT_TIMESTAMP()

$sql = "INSERT INTO " . $table . " 
    (firstname, lastname, email, phone_number, timesstamp) 
VALUES 
    ('$firstname', '$lastname', '$email', '$phonenumber', CURRENT_TIMESTAMP())";