这是我的MySQL错误。
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 2
我用Google搜索并阅读有关它的内容,我无法理解。
如何解决?
这是addStudent.php
的主要内容:
require_once('../db.php');
$db = new DB();
if (isset($_POST['st_fname']) && isset($_POST['st_lname']) && isset($_POST['st_class']) && isset($_POST['st_grade']))
{
$db->addStudent($_POST["st_fname"], $_POST["st_lname"], $_POST["st_class"], $_POST["st_grade"], $_POST["checkOlamp"]);
}
这是db.php
的一部分:
public function addStudent($fname, $lname, $classnum, $grade, $olamp)
{
$query = "INSERT INTO t_student (s_fname, s_lname, s_class, s_grade, s_olamp) VALUES('$fname', '$lname', '$classnum', '$grade', '$olamp');";
$this->execute($query);
}
并且t_student的归档为primary
,这是自动增量。
答案 0 :(得分:4)
这意味着表中某些列的值必须是唯一的,并且您尝试插入重复的行。
BTW,你的函数容易受到SQL注入攻击,你应该在将数据包含在SQL查询中之前总是将其转义。答案 1 :(得分:0)
解决“ SQLSTATE [23000]:违反完整性约束:1062复制条目”的另一种简便方法是在如下形式的输入字段中传递值: 您可以在占位符之前看到价值... 注意:articles是数据库表名
<div class="form-group">
<label for="exampleInputTitle">Title</label>
<input type="title" name="title" class="form-control" id="exampleInputTitle"
aria-describedby="emailHelp"
value="<?php echo $articles->title;?>"placeholder="Enter title">
<small id="titleHelp" class="form-text text-muted"></small>
</div>