【问题标题】:How to solve SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry?如何解决 SQLSTATE[23000]:完整性约束违规:1062 重复条目?
【发布时间】:2012-07-05 17:26:36
【问题描述】:

这是我的 MySQL 错误。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 2

我在谷歌上搜索并阅读了一些关于它的内容,但我无法理解。

如何解决?

这是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 键,它是自动递增的。

  • db.php 是我一直使用它而不是 php 中的 mysql_connection 函数的东西,但我不知道它到底是什么。我知道那里使用了一种叫做“PDO”的东西。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这意味着你的表中某些列的值必须是唯一的,并且你试图插入一个重复的行。

    顺便说一句,您的函数容易受到 SQL 注入的影响,您应该始终在将数据包含在 SQL 查询中之前对其进行转义。

    【讨论】:

    • 我发现了问题!谢谢! + 我听说 php5 阻止了 sql 注入,但是有人怎么能在这里注入一些“坏”的东西呢?(我使用 isset 以获得更好的结果)只有if ($_SESSION['adm'] === true) 的人才能访问此页面。那么有什么风险呢?
    • 这仍然是非常糟糕的做法;如果有人闯入您的管理区域,他也可以在您的 SQL 服务器上运行任何东西。
    • 而且由于 addStudent.php 容易受到 CSRF 的攻击,每个人都可以欺骗自己的浏览器以他想要的任何参数调用脚本。不需要'adm'=true。
    【解决方案2】:

    解决“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>
    

    【讨论】:

      猜你喜欢
      • 2016-05-23
      • 1970-01-01
      • 2016-01-16
      • 2021-10-11
      • 2014-09-16
      • 2018-06-06
      • 2020-12-20
      • 2016-03-10
      • 2015-03-31
      相关资源
      最近更新 更多