提交表单时出错

时间:2011-12-16 10:59:21

标签: php mysql html forms

为什么我无法在我的数据库中插入?这是我的代码

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$bdate = $_POST['bdate'];
$id = $_POST['id'];

if (!empty($name) && !empty($email)){
    mysql_query("insert into customer(id,name,email,bdate) values($id,'$name','$email','$bdate')");
}
else {
    echo "Please fill <strong>name</strong> and <strong>e-mail</strong> fields!";
}

?>

我的表单是

<form method="post" action="new_customer.php">
    ID: <input type="text" name="id" size="5" value="<?php echo $new_id; ?>" disabled="disabled" /><br />
    Name: <input type="text" name="name" size="50" /><br />
    E-mail: <input type="text" name="email" size="30" /><br />
    Birth Date: <input type="text" name="bdate" size="10" /><br /><br />
    <input type="submit" value="Save" />
</form>

var $ new_id用这个查询填充

SELECT (Max(id) + 1) as new_id FROM customer

但是当我提交表单时,我得到的错误是:

Notice: Undefined index: id in F:\UniServer\www\admin\customer.php on line 6

然后是一个mysql错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' '')' at line 1

我认为第一个错误导致了secund,对吧?

4 个答案:

答案 0 :(得分:2)

因为$_POST数组中没有禁用的字段 在您的情况下,在数据库中创建id字段自动增量,并在没有它的情况下进行查询:

mysql_query("INSERT INTO customer(name, email, bdate) values('$name', '$email', '$bdate')"); 

此外,您的代码需要进行SQL注入 - 在查询之前使用mysql_real_escape_string

$name = mysql_real_escape_string($_POST['name']);

答案 1 :(得分:0)

删除“disabled =”禁用“”...

这是停止将表单发布到PHP的表单。

答案 2 :(得分:0)

请提供获取记录的mysql代码,因为将表id值赋值给php值时可能会出错。

答案 3 :(得分:0)

而不是disabled="disabled"您要使用readonly="readonly"。这可以防止对字段进行编辑,但仍然可以以编程方式读取该值(disabled不是这种情况)。