4

これは私の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」と呼ばれるものがそこで使用されていることを私は知っています。
4

2 に答える 2

5

これは、テーブル内の一部の列の値が一意である必要があり、重複する行を挿入しようとしていることを意味します。

ところで、関数は SQL インジェクションに対して脆弱です。SQL クエリに含める前に、常にデータをエスケープする必要があります。

于 2012-07-05T17:29:12.330 に答える