2011-12-16 122 views
0

为什么我无法在我的数据库中插入?这是我的代码提交表格时出错

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

的变量$ 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,对吗?

+0

什么是id如果它是你的自动增量id然后删除它并尝试 – 2011-12-16 13:03:28

回答

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']); 
0

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

这是停止的形式向现场张贴到你的PHP。

+1

相反,你可以使用readonly =“只读”,这会使字段不可编辑。 – Arfeen 2011-12-16 11:06:54

+0

,但我不希望用户编辑此字段= s – VoteMeUp 2011-12-16 11:13:00

+0

正如我所说的,这将使该字段不可编辑,并且用户不能输入任何值。 – Arfeen 2011-12-16 11:15:30

0

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

0

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