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

时间:2016-05-13 12:34:13

标签: php html sql

我正在尝试创建一个网站,管理员可以在其中查看有关在商店购物的客户的详细信息。主页列出了所有客户的名称,单击时,每个名称都指向一个名为CustomerDetails.php的页面,该页面提供有关该特定客户的更多详细信息。我正在尝试编写一些代码,允许管理员向特定客户添加注释。这两个表如下:

 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'

关于我要去哪里的一些建议会很棒!

4 个答案:

答案 0 :(得分:3)

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

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

也可以说你的前两个查询也一样。

你正在混合使用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是您的主键 - 您应该考虑使用此自动增量,因此您不需要任何名为&#34; noteID&#34;的输入。 - 没有自动增量的cos,你需要一个验证机制来检查那里是否有一个带有该id的注释。

答案 1 :(得分:0)

使用POST功能,

$Name = $_POST['Name']; 

您的表单使用POST方法。

答案 2 :(得分:0)

您可能遇到的另一个问题是:

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

如果要显示变量$CostumerID,则应使用php标记<?php $CostumerID ?><?= $CostumerID ?>

答案 3 :(得分:0)

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