Qeephp 中数据的 tinyint 类型

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

Qeephp 中数据的 tinyint 类型_第1张图片

使用表单传递参数:

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


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

Qeephp 中数据的 tinyint 类型_第2张图片

然后我把得到的数据用模型的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 类型_第3张图片

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

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

Qeephp 中数据的 tinyint 类型_第4张图片

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

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

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

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

你可能感兴趣的:(tinyint,qeephp)