Qeephp 中数据的 tinyint 类型

今天在写程序时碰到了一个问题,我的数据结构如下:

使用表单传递参数:

<div id="msg_div" style="display:none;">
	<form action="<?php echo url('pm/sendmsg');?>" method="post">
		<p>
			<label>标&nbsp;&nbsp;&nbsp;题</label>
			<input name="title" type="text" />
		</p>
		<p>
			<label>收件人</label>
			<input type="text" name="recived_id" value="4,3" />
		</p>
		<p>
			<label class="v_top">内&nbsp;&nbsp;&nbsp;容</label>
			<textarea rows="4" cols="40" name="content"></textarea>
		</p>
		<p>
			<label>&nbsp;</label>
			<input type="hidden" name="pm_type" value="2" />
			<input type="submit" value="Send Message"/>
		</p>
	</form>
</div>


经过一系列的数据处理之后得到我要的数据数组,输出结果为:

然后我把得到的数据用模型的save()方法存入到数据库中:

$pm_list_mod = new Pmlists($pm_list);
$pm_list_mod->save();
一切都没有问题,可是在前台显示的时候却不正确了,然后我查看保存到数据库中的记录时,奇迹发生了:

这是为什么?前面我们已经知道传递的值应该是2,可以保存到数据库中却成了1。所以前台显示的时候当然就不正确了,这是什么原因呢,在保存之前我们输出一下新建的模型实例:

$pm_list_mod = new Pmlists($pm_list);
echo '<pre>';
print_r($pm_list_mod);
echo '</pre>';
exit();

得到结果:

可见在这个时候我们传递的值就已经改变了,为什么会这样呢?原因是什么,我百思不得其解。最后只能求助经理了;原来在QeePHP框架中 tinyint 类型的数据会被当作布尔类型BOOL/BOOLEAN数据来使用,会自动将数据的值转换。此时恍然大悟,其实这样的设计也不无道理,我们在用 phpMyadmin 建立数据表时是不支持 Bool 型的数据的,这样一来如何识别呢?当然用 tinyint 类型来解决就可以了。

原因找到,现在要解决问题了,修改表的结构:

然后再次测试,查看保存的数据:

可以看到数据插入成功了。

由此可见,我们在设计数据库时还是要考虑全面一点的,当处理不是太大的整形数据时我们可以设置 int 型字段的长度来达到我们所要的效果。

记录此问题纯粹为了方便以后的查阅,如果有不足之处,你可以告诉我哦。

转载于:https://my.oschina.net/frylan/blog/125929

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值