Codeigniter在mysql中将true插入0

时间:2016-06-22 16:59:09

标签: php mysql codeigniter

我无法弄清楚为什么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'>=&gt;</font> <small>string</small> <font color='#cc0000'>'123123'</font> <i>(length=6)</i>
  'description' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'123123'</font> <i>(length=6)</i>
  'tourist_location' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'true'</font> <i>(length=4)</i>
  'approved_location' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'true'</font> <i>(length=4)</i>
</pre>

这是DB中的状态 enter image description here

这是我的表结构 table structure

那么我的代码到底失败了?为什么我插入1或&#39; true&#39; db表中的状态是0?

如果您需要任何其他信息,请告诉我,我会提供。 谢谢你的帮助!

2 个答案:

答案 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

您的数据库结构

enter image description here

SQL General Data Types

enter image description here