簡體   English   中英

如何在Codeigniter中插入除ID外的唯一表數據?

[英]How to insert unique table data except id in codeigniter?

如何在mysql中插入唯一行? id和userid都是不同的列。 我設置的id是唯一的。但是userid和checkin列不應重復。 這可能嗎?

if($this->dx_auth->is_logged_in()){
    $insertData['userid']     = $this->dx_auth->get_user_id();
    $insertData['checkin']    = $checkin;
    $insertData['checkout']   = $checkout;
    $insertData['location']   = $location;
    $insertData['guest']      = $nof_guest;
    $id = $this->dx_auth->get_user_id();
    $result = $this->Common_model->getTableData('searchlist', array("userid" => $id));
    if($result->num_rows > 4){
        $res = $result->result();
        $del_id = $res[0]->id;
        $conditions = array("id" => $del_id);
        $this->Common_model->deleteTableData('searchlist', $conditions);
    } 
    if($location != "0"){
    $this->Common_model->inserTableData('searchlist', $insertData);}}

在這種情況下,您實際上可以將useridcheckin列作為復合主鍵。 如果需要,您仍然可以使用id作為主鍵,並為合並的其他2列創建唯一索引。

在插入可能導致MySQL錯誤的新組合之前,您可能還應該檢查記錄是否存在。

干杯!

您可以將id保留為主鍵,並為用戶表自動遞增。

然后,您必須為useridcheckin創建組合的唯一密鑰。

CREATE UNIQUE INDEX user_checkin_time ON searchlist (userid, checkin);

在控制器中,您必須在插入/更新之前驗證用戶標識並簽入。

$isExist = $this->Common_model->getTableData('searchlist', array("userid" => $id,"checkin"=>$checkin));
if($isExist->num_rows()>0)
{
  // throw error message as checkin time already exist
}
else
{
   // continue with further code
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM