2012-11-21 52 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

感谢所有帮助的人,但事实证明,我是一个白痴,并没有意识到传递一个数组到函数。