2011-12-16 116 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不是這種情況)。