2011-10-05 95 views
1
$sql = "select * from instalmentsdetails_ where studentFeeId='$savestudentfees' AND instalmentName='$instlnamefdtls'"; 
    $query = $this->db->query($sql); 
    if($query->num_rows() > 0){ 
     echo($id); 
     $this->db->where('instalmentsDetailsId',$id); 
     $this->db->update('instalmentsdetails_',$instldata);  
    }else{ 
     echo($id); 
     $id=''; 
     echo($id); 
     $sql= "INSERT INTO instalmentsdetails_` (`instalmentsDetailsId`, `studentFeeId`, `instalmentName`, `amount`, `dueDate`, `status`) VALUES ('$id', '$savestudentfees', '$instlnamefdtls', '$amtfdtls', '2011-10-06', '1')"; 
     $id=$this->db->insert_id(); 
     $query = $this->db->query($sql); 
     return $query; 
    } 
    return $id; 

該查詢首先檢查是否存在任何行,如果存在,它將更新舊記錄,否則它將創建新記錄,但由於某種原因,它甚至無法按預期工作當查詢返回num_row() > 0。它是在一個笨模型任何人都可以告訴這個查詢有什麼問題嗎?

+0

如果'if'條件爲真 - 然後'if'身體不執行。根據定義。你有'num_rows <= 0'或者在代碼中的其他地方插入數據。 – zerkms

回答

1

你檢查的$query->num_rows()?輸出,如echo $query->num_rows()

你可以做到這一點,而不是和保存PHP

ALTER TABLE teami_db ADD UNIQUE INDEX(studentFeeId, instalmentName); 
打擾

然後,您可以像這樣執行ON DUPLICATE KEY UPDATE查詢。

INSERT INTO `instalmentsdetails_teami` (
    `instalmentsDetailsId`, 
    `studentFeeId`, 
    `instalmentName`, 
    `amount`, 
    `dueDate`, 
    `status` 
) VALUES (
    '$id', 
    '$savestudentfees', 
    '$instlnamefdtls', 
    '$amtfdtls', 
    '2011-10-06', 
    '1' 
) ON DUPLICATE KEY UPDATE 
    `instalmentsDetailsId` = VALUES(`instalmentsDetailsId`), 
    `studentFeeId`   = VALUES(`studentFeeId`), 
    `instalmentName`  = VALUES(`instalmentName`), 
    `amount`    = VALUES(`amount`), 
    `dueDate`    = VALUES(`dueDate`), 
    `status`    = VALUES(`status`) 

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

+0

請刷新,我已更新查詢:) – Geoffrey

+0

兄的概率是,它不更新,而是創建一個新行或插入一個新行 – Ghostman

+0

它只會創建一個新的行,如果重複鍵不存在於數據庫中,否則會更新。您必須在兩列上具有UNIQUE索引。這樣可以節省1個額外的查詢,因爲重複的密鑰檢查正在執行您的第一個查詢所做的操作,並且保存了重複的代碼,從而使其效率更高。 – Geoffrey

相關問題