2
這是我的MySQL錯誤。如何解決SQLSTATE [23000]:完整性約束違規:1062重複條目?
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是我總是用它來代替mysql中的mysql_connection函數,但我不知道它到底是什麼。我知道在那裏使用一種叫做「PDO」的東西。
我發現問題了!謝謝! +我聽說php5防止sql注入,但是怎麼能在這裏注入一些「壞」東西?(我使用isset來獲得更好的結果)只有一個人'if($ _SESSION ['adm'] === true)'有權訪問此頁面。那麼風險是什麼? – 2012-07-05 17:42:59
這還是很不好的做法;如果有人在你的管理區域中斷,他也可以在你的SQL服務器上運行任何東西。 – arnaud576875 2012-07-05 17:47:51
由於addStudent.php易受CSRF攻擊,所以每個人都可以欺騙自己的瀏覽器,以任何他想要的參數調用腳本。不需要'adm'= true。 – arnaud576875 2012-07-05 17:49:53