2017-02-12 65 views
0

我想讓我的函數在mysql中增加一個值,但它只能工作一次 - 從零到1.然後它不會增加。我注意到我需要添加(int)才能完成這個操作,所以我猜這是與數據類型有關的。你有什麼提示嗎?用++從代碼控制器增加mysql值

$mod_seq = $this->db2->query("select mod_sequence from tbl_release_info where release_id = '$release_id';"); 
$current_modsequence = (int)$mod_seq++; 

$update_query_release_info = "update tbl_release_info set mod_sequence = '$current_modsequence' where release_id = '$rid'; 

回答

0

在你的問題中的查詢返回的行數,而不是你想從mod_sequence中得到的值。試試這個:

$query = $this->db2->query("select mod_sequence from tbl_release_info where release_id = '$release_id';"); 

$row = $query->row(); 
    if (isset($row)) { 
    $mod_seq = $row->mod_sequence; 
    } 
$mod_seq++; 
$update_query_release_info = "update tbl_release_info set mod_sequence = '$mod_seq' where release_id = '$rid'; 

如果mod_sequence的數據類型不是整數,類型強制轉換:

$mod_seq = (int)$row->mod_sequence; 

或者這樣:

$mod_seq = intval($row->mod_sequence); 

編輯:@RiggsFolly釘最到目前爲止,在一個單一的查詢優雅的解決方案:-) https://stackoverflow.com/a/42194758/1363190

1

你可以這樣做的理由噸SQL和在這樣一個單一的查詢

$this->db2->query("update tbl_release_info 
        set mod_sequence = mod_sequence + 1 
        where release_id = '$rid'"); 
+0

顯然是最簡單和最好的解決方案... –

+0

偉大的解決方案!謝謝! – mgeezy