Php CodeIgniter:检查记录是否存在

Php CodeIgniter:检查记录是否存在,php,codeigniter,validation,record,exists,Php,Codeigniter,Validation,Record,Exists,我一直在为学校做一个CodeIgniter项目,我需要用用户数据创建一个票证。如果用户还不在数据库中,他填写到表单中的数据将被插入数据库中,如果他已经存在于数据库中,则只会创建一个具有他已经存在的用户id的票证 我一直在尝试检查是否有用户使用他的电子邮件,但我没有运气。谷歌搜索了几个小时;试过回调,正常验证,随便你说。我就是不能让它工作,我真的很感谢你的帮助。以下是我当前的代码: 控制器 public function create_ticket() { $this->load-&

我一直在为学校做一个CodeIgniter项目,我需要用用户数据创建一个票证。如果用户还不在数据库中,他填写到表单中的数据将被插入数据库中,如果他已经存在于数据库中,则只会创建一个具有他已经存在的用户id的票证

我一直在尝试检查是否有用户使用他的电子邮件,但我没有运气。谷歌搜索了几个小时;试过回调,正常验证,随便你说。我就是不能让它工作,我真的很感谢你的帮助。以下是我当前的代码:

控制器

public function create_ticket() {
    $this->load->library('form_validation');
    // field name, error message, validation rules
    $this->form_validation->set_rules('voornaam', 'Voornaam', 'trim|required');
    $this->form_validation->set_rules('tussenvoegsel', 'Tussenvoegsel', 'trim');
    $this->form_validation->set_rules('achternaam', 'Achternaam', 'trim|required');
    $this->form_validation->set_rules('email', 'E-mailadres', 'trim|required|valid_email');
    $this->form_validation->set_rules('geboortedatum', 'Geboortedatum', 'required');
    $this->form_validation->set_rules('postcode', 'Postcode', 'trim|required');
    $this->form_validation->set_rules('woonplaats', 'Woonplaats', 'trim|required');

    if($this->form_validation->run() == FALSE)
    {
        echo "Failed";
        $this->reservate();
    }
    else
    {
        $this->ticket_model->add_ticket($email);
        $this->reservate();

    }
}
型号:

public function add_ticket($email) {
    $query = $this->db->query("SELECT email FROM visitor
                               WHERE email = '".$email."'");
    if($query->num_rows() == 0){
        $data = array(
            'voornaam' => $this->input->post('voornaam'),
            'tussenvoegsel' => $this->input->post('tussenvoegsel'),
            'achternaam' => $this->input->post('achternaam'),
            'email' => $this->input->post('email'),
            'geboortedatum' => $this->input->post('geboortedatum'),
            'postcode' => $this->input->post('postcode'),
            'woonplaats' => $this->input->post('woonplaats')
        );
        $this->db->insert('visitor', $data);
    }
    else {
        return false;
    }

    }
查看(如果非常重要)

严重性:通知

消息:未定义变量:电子邮件

文件名:controllers/booking.php

电话号码:42

我不知道为什么会发生这种情况,因为如果我不把$email变量放在那里,我会得到一个错误,他遗漏了一个参数,所以我在这里有点困惑。另外,我的主要问题是,尽管它给出了错误和所有东西,但他还是将记录插入数据库。。。尽管已经存在具有相同电子邮件地址的记录


我真的不知道如何解决这个问题,所以非常感谢您的帮助。提前感谢。

只犯了一个错误,将电子邮件字段数据分配到一个变量,然后将您的电子邮件传递到
add\u ticket
模型。就这样:)

现在修改你的模型,稍微修改一下

function add_ticket($email) {

    // Added $this->db->escape() and limit 1 for Performance
    $query = $this->db->query("SELECT email FROM visitor
                           WHERE email = ".$this->db->escape($email)." limit 1");

   // Collect Data Array
   $data = array(
        'voornaam' => $this->input->post('voornaam'),
        'tussenvoegsel' => $this->input->post('tussenvoegsel'),
        'achternaam' => $this->input->post('achternaam'),
        'email' => $this->input->post('email'),
        'geboortedatum' => $this->input->post('geboortedatum'),
        'postcode' => $this->input->post('postcode'),
        'woonplaats' => $this->input->post('woonplaats')
    );

 // Make Code Short and Clear
 return $query->num_rows() == 0 ? $this->db->insert('visitor', $data) : false;
}

请打印($\u POST)并向我们显示结果。不过,您给我的新查询有语法错误。我不知道问题在哪里,因为它应该是正确的。。。“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解使用near的正确语法”ruud@mail.com第2行“有什么想法吗?”@Jason OOPs right,应该是
“$this->db->escape($email)。”
,检查此项了解更多信息:
<h1>Ticket Bestellen</h1>
<label>
    <span>Voornaam</span>
    <input type="text" class="input_text" name="voornaam" id="voornaam"/>
</label>
<label>
    <span>Tussenvoegsel</span>
    <input type="text" class="input_text" name="tussenvoegsel" id="tussenvoegsel"/>
</label>
<label>
    <span>Achternaam</span>
    <input type="text" class="input_text" name="achternaam" id="achternaam"/>
</label>
<label>
    <span>E-mailadres</span>
    <input type="text" class="input_text" name="email" id="email"/>
</label>
<label>
    <span>Geboortedatum</span>
    <input type="text" id="geboortedatum" name="geboortedatum" placeholder="dd-mm-jjjj">
</label>
<label>
    <span>Postcode</span>
    <input type="text" class="input_text" name="postcode" id="postcode"/>
</label>
<label>
    <span>Woonplaats</span>
    <input type="text" class="input_text" name="woonplaats" id="woonplaats"/>
</label>
    <input type="submit" class="button" value="Reserveren" />
</label>
A PHP Error was encountered
$email = $this->input->post("email");
$this->ticket_model->add_ticket($email);
function add_ticket($email) {

    // Added $this->db->escape() and limit 1 for Performance
    $query = $this->db->query("SELECT email FROM visitor
                           WHERE email = ".$this->db->escape($email)." limit 1");

   // Collect Data Array
   $data = array(
        'voornaam' => $this->input->post('voornaam'),
        'tussenvoegsel' => $this->input->post('tussenvoegsel'),
        'achternaam' => $this->input->post('achternaam'),
        'email' => $this->input->post('email'),
        'geboortedatum' => $this->input->post('geboortedatum'),
        'postcode' => $this->input->post('postcode'),
        'woonplaats' => $this->input->post('woonplaats')
    );

 // Make Code Short and Clear
 return $query->num_rows() == 0 ? $this->db->insert('visitor', $data) : false;
}