2012-11-21 103 views
1

我正在代碼點火器中構建一個應用程序。我在更新數據庫中的布爾單元格時遇到問題。這裏是我的發言:SQL更新布爾值

public function updateHide($id) { 
     $sql = "UPDATE holiday_request SET hide = '1' WHERE holiday_request_id = " . (int)$id; 
     $this->db->query($sql); 
     echo $this->db->affected_rows();    
    } 

我使用的是受影響的行函數向Firebug的快速檢查,這已經影響到了有效行。 我已經打印出SQL語句並在PHP Myadmin中進行了測試,並且它工作正常,這意味着ID是正確的並且數據庫中存在有效的行。 我不能爲了我的生活找出爲什麼表沒有更新。 anyobdy可以指向正確的方向嗎? 在此先感謝!

+1

您是否嘗試過不引用'1'?你也確定'$ id'是你認爲它的價值嗎? – prodigitalson

+0

你確定該功能正在運行?或許在函數運行時回顯一些東西?我假設沒有顯示來自'echo $ this-> db-> affected_rows();'的響應。 – NappingRabbit

+0

如果查詢函數返回成功,並且如果不回顯錯誤,對您來說將會非常有用。 – EmmanuelG

回答

-2

的值設置爲True不爲「1」

public function updateHide($id) { 
    $sql = "UPDATE holiday_request SET hide = TRUE WHERE holiday_request_id = " . (int)$id; 
    $this->db->query($sql); 
    echo $this->db->affected_rows();    
} 
+0

毫無意義。無論如何,在MySQL中true爲1。而'1'也轉換爲1並且也是如此。 –

+0

嘿我以前也試過,但它似乎沒有工作。 :( – devoncrazylegs

+0

bool和布爾與tinyint是0或1的同義詞,所以這不是真的 – EmmanuelG

0

因爲我認爲你應該使用exec方法,而不是更新:

$affected_rows = $this->db->exec($sql); 
0

嘗試加載數據庫到你的函數如下

public function updateHide($id) { 
    $this->load->database(); 
    $sql = "UPDATE holiday_request SET hide = '1' WHERE holiday_request_id = " . (int)$id; 
    $this->db->query($sql); 
    echo $this->db->affected_rows();    
} 

暗示從here

1

感謝所有幫助的人,但事實證明,我是一個白癡,並沒有意識到傳遞一個數組到函數。