protected $_validate = array( // array(field,rule,message,condition,type,when,params) // 1 使用者不可為空,唯一,至少4個字元 array('username', '', '使用者名稱已存在', 0, 'unique'), );
在表單輸入相同的名字 報SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '100' for key 'PRIMARY'
資料庫相同的名字的位置,而不是輸出錯誤資訊。這是那裡錯了?
回複討論(解決方案)
報錯提示: Integrity constraint violation: 1062 Duplicate entry '100' for key 'PRIMARY'
該是整型的主鍵欄位。而你給了字串'100'。什麼情況
主鍵id100那行的username是相同的輸入
而且還有一個錯誤
所有錯誤訊息都報非法資料對象!
請貼出控制器裡處理表單的代碼
是控制器裡處理表單代碼邏輯錯了
$user = new \Model\UserModel();
if (!empty($_POST)) {
$_POST['user_hobby'] = implode(',', $_POST['user_hobby']);
// create方法收集表單資訊並返回,同時觸發表單自動驗證
$data = $user->create(); // model設定$_validate // 如果設定了資料自動驗證則進行資料驗證
if ($user->add($data)) {
echo '添加資料成功';
} else {
dump($user->getError());
}
} else {
$this->display();
}
}
改成
if ($data) {
echo '添加資料成功';
} else {
dump($user->getError());
return;
}
$user->add($data);
就好了,
不過為什麼會這樣
列印出$data看看,給出表結構。