我正在尝试创建一个网站,管理员可以在其中查看有关在商店购物的客户的详细信息。主页列出了所有客户的名称,单击时,每个名称都指向一个名为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'
关于我要去哪里的一些建议会很棒!
答案 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;?>">