当CodeIgniter在数据库中插入一行时,它不会将PHP布尔值编码为MySQL需要的形式。
例如:
$new_record = array(
"name" => "Don",
"is_awesome" => true
);
这将以这种方式进入MySQL:
name (varchar) is_awesome (tinyint)
Don 0
有人知道解决这个问题的好方法吗?我一直在写
(is_awesome == true) ? 1 : 0;
然后设置数组值,但这很糟糕。 最佳答案
您不能在mysql中将true
或false
添加到TINYINT
中。你应该像这样做1
或0
$new_record = array(
"name" => "Don",
"is_awesome" => 1 //1 means it's true
);
$query = $this->db->insert('table_name', $new_record);
然后就在您将其提取时,将
0
视为false
,将1
视为true
更新:
您可以像下面这样创建一个名为
tinyint_decode
的函数:public function tinyint_decode($result = array(), $decode_set = array())
{
//$result is what you got from database after selecting
//$decode_set is what you would like to replace 0 and 1 for
//$decode_set can be like array(0=>'active', 1=>'inactive')
//after fetching the array
$result->is_awesome = ($result->is_awesome == 1 ? $decode_set[1] : $decode_set[0]);
return true;// or anything else
}
这样,您可以通过喜欢的任何东西来解释
0
和1
,无论是真假, Activity 和非 Activity ,或者仅通过传递$decode_set
数组来解释。关于codeigniter - CodeIgniter-在db中用 bool 值插入新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19017667/