我使用get_uid()函数从表organizationalmember中调用了一个uid。现在,我想在插入之前检查此uid是否在表签名中没有重复项。 (sigantures.uid = Organizationalmember.uid)因此,如果没有重复项,我会将其插入到签名数据库BaseValidator
中,如果有重复项,我想将其重定向到另一个页面(可能是错误页面),我不想显示数据库重复错误。我是Codeigniter的新手,希望能获得一些帮助。
答案 0 :(得分:0)
解决方案1:您可以使用表单验证库,它不会让您重复值https://www.codeigniter.com/userguide3/libraries/form_validation.html?highlight=validation
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');
解决方案2:您也可以在字段上使用jquery ajax验证输入show username已经退出 解决方案3:您可以发布该值,并检查具有特定列和值的行数是否大于1,然后进行重复
我建议您遵循解决方案2,如果您愿意,我可以为您提供代码。
答案 1 :(得分:0)
我亲自在模型中编写一个方法,以检查是否存在重复的条目,并在调用该方法将数据添加到数据库之前立即调用该方法。
例如
class MyModel extends CI_Model
{
public function isInDatabase($data)
{
// Run a SELECT query with $data to search if there is a record with that $data
if($data_exists)
return true;
else
return false;
}
public function insertInDatabase($data)
{
// Run an INSERT query with $data
}
}
然后在我的控制器中,我检查是否有重复的条目,然后再添加$data
class MyController extends CI_Controller
{
public function add()
{
$data = // Some code to retrive data from user input
if($this->mymodel->isInDatabase($data))
$this->mymodel->insertInDatabase($data)
else
// Do nothing or show an error page.
}
}
答案 2 :(得分:0)
在控制器中,您可以使用内置的Codeigniter表单验证库来检查数据库中是否存在该值。
public function save_data {
$this->load->library('form_validation');
$this->form_validation->set_rules('uid', 'UID', 'is_unique[table.column]');
if ($this->form_validation->run() == FALSE) {
echo validation_errors();
}
else {
$this->model->insert_to_database();
}
}