我无法弄清楚为什么Codeigniter在mysql Db中插入0甚至认为值为true。让我举个例子
这是插入发生的My_model
function insert($data,$tablename=""){
if($tablename=="")
$tablename = $this->table;
var_dump($data);
$this->db->insert($tablename,$data);
return $this->db->insert_id();
}
这是var转储数据
<b>array</b> <i>(size=23)</i>
'name' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'123123'</font> <i>(length=6)</i>
'description' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'123123'</font> <i>(length=6)</i>
'tourist_location' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'true'</font> <i>(length=4)</i>
'approved_location' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'true'</font> <i>(length=4)</i>
</pre>
那么我的代码到底失败了?为什么我插入1或&#39; true&#39; db表中的状态是0?
如果您需要任何其他信息,请告诉我,我会提供。 谢谢你的帮助!
答案 0 :(得分:2)
您的tourist_location和approved_location数据类型错误。
您实际上是在告诉数据库插入字符串&#34; true&#34;到一个整数字段。数据库将需要一个数字,当它收到你的&#34; true&#34;它会尝试将其转换为整数。结果是0。
您可以操纵$数据,使其更像
$data = array(
'name' => 'xyz',
'description' => 'somedescription',
'tourist_location' => 1,
'approved_location' => 1
);
如果您正在使用表单提交此数据,则只需使用类似的复选框
<input type="checkbox" name="tourist_location" value="1">
<input type="checkbox" name="approved_location" value="1">
如果它是一个选择,那么类似的东西将正常工作
<select name="tourist_location">
<option value="0">No</option>
<option value="1">Yes</option>
</select>
我希望这是有道理的。
答案 1 :(得分:1)
您使用BOOLEAN
作为数据类型。因此,在这种情况下,它只允许您使用0
1
。
If TRUE then its 1
If FALSE then its 0
您的数据库结构