使用HTML表单将数据插入数据库时​​出错

问题描述:

我试图创建一个网站,管理员可以在该网站上查看有关在商店购物的顾客的详细信息。主页上列出了所有客户的名称,点击后,每个名称都被引导到一个名为CustomerDetails.php的页面,该页面提供了有关该特定客户的更多详细信息。我试图编写一些代码,允许管理员向特定客户添加备注。这两个表如下:使用HTML表单将数据插入数据库时​​出错

CREATE TABLE PHPNotes(
NoteID INT, 
NoteContent VARCHAR(100) NOT NULL, 
CustomerID INT, 
FOREIGN KEY (CustomerID) REFERENCES CustomerEnrolment(CustomerID), 
PRIMARY KEY(NoteID))ENGINE=InnoDB; 

CREATE TABLE CustomerEnrolment(
CustomerID INT, 
Name VARCHAR(30), 
Email VARCHAR(30), 
PhotoURL VARCHAR(30), 
PRIMARY KEY(CustomerID)) ENGINE=InnoDB; 

我试图从窗体中获取数据(如下所示)并将此特定数据插入到数据库中。不过,我被告知,我写的代码存在错误。

<?php 

$Name = $_GET['Name']; 
$CustomerID = $_GET['CustomerID']; 
$sql1 ="SELECT * FROM CustomerEnrolment WHERE CustomerID='$CustomerID'"; 
$sql2 ="SELECT c.*, e.CustomerID FROM CustomerNotes c, CustomerEnrolment e WHERE e.CustomerID=n.CustomerID AND Name='$Name'" ; 


if(! get_magic_quotes_gpc()) { 
    $NoteContent = addslashes ($_POST['NoteContent']); 
} 

else { 
    $NoteContent = $_POST['NoteContent']; 
} 

$NoteID = $_POST['NoteID'];   
$sql = "INSERT INTO CustomerNotes ". "(NoteID,NoteContent,CustomerID) ". "VALUES('$NoteID','$NoteContent','$CustomerID')"; 
$result = mysql_query($sql); 

if(! $result) { 
    die('Could not enter data: ' . mysql_error()); 
} 

echo "Entered data successfully\n"; 

?> 

<p> Add New Customer Record </p> 

<form method = "post" action = "<?php $_PHP_SELF ?>"> 
<table id="Add Record"> 
<tr> <td> Note ID </td> 
<td> <input name = "NoteID" type="text" id="NoteID"></td> 
<td> <input name = "NoteContent" type="text" id="NoteContent"></td> </tr> 
<tr> <td> <input type="hidden" name="CustomerID" value="$CustomerID"></td> </tr> 
<tr> <td> <input name = "Add Customer Note" type = "submit" id = "Add Customer Note" value = "Add Customer Note"> </td> </tr> 
</table> 
</form> 

的错误是:

Notice: Undefined index: CustomerID 
Notice: Undefined index: NoteContent 
Notice: Undefined index: NoteID 
Could not enter data: Duplicate entry '0' for key 'PRIMARY' 

一些意见,以我要去的地方的将是巨大的!

+0

表单用作“post”方法 – selvan

一两件事 - 你的查询有问题 - 它应该是:

$sql = "INSERT INTO CustomerNotes (NoteID,NoteContent,CustomerID) VALUES('".$NoteID."','".$NoteContent."','".$CustomerID."')"; 

和同样可以为你的第一个2级的查询可以说为好。

而且你混合PHP和HTML而不是一个好办法:))

<tr> 
    <td> 
     <input type="hidden" name="CustomerID" value="$CustomerID"> 
    </td> 
</tr> 

应该是:

<tr> 
    <td> 
     <input type="hidden" name="CustomerID" value="<?php echo $CustomerID; ?>"> 
    </td> 
</tr> 

而且你不关闭你的输入 - 他们应该是怎样的?

<input name = "NoteID" type="text" id="NoteID" /> 

而且 - 鉴于noteID是你的主键 - 你应该考虑这种自动递增,因此,您就不需要有一个名为“noteID”任何输入 - 无autoincrementation,因为你需要一个验证机制,以检查那个ID里面还没有一张纸条。

使用POST功能,

$Name = $_POST['Name']; 

您的形式使用POST方法。

另一个问题你可能有:

<tr> <td> <input type="hidden" name="CustomerID" value="$CustomerID"></td> </tr> 

如果你想显示VAR $CostumerID你应该使用PHP标签<?php $CostumerID ?><?= $CostumerID ?>

1)变化

$sql = "INSERT INTO CustomerNotes ". "(NoteID,NoteContent,CustomerID) ". "VALUES('$NoteID','$NoteContent','$CustomerID')"; 

$sql = "INSERT INTO CustomerNotes(NoteID,NoteContent,CustomerID) VALUES('$NoteID','$NoteContent','$CustomerID')"; 

2)变化

<input type="hidden" name="CustomerID" value="$CustomerID"> 

<input type="hidden" name="CustomerID" value="<?php echo $CustomerID;?>">