【发布时间】:2011-11-25 03:52:18
【问题描述】:
我用一些布尔字段制作了表格。
创建表 PM_ADMIN_LIST( id INT UNSIGNED AUTO_INCREMENT 主键, 用户名 VARCHAR(250) 非空, 密码 VARCHAR(250) NOT NULL, 邮件 VARCHAR(250) 非空, added_time INT, super_admin VARCHAR(250) 非空, last_time INT, last_ip VARCHAR(250), see_user_per 布尔默认值 FALSE, change_user_per 布尔默认值 FALSE, see_people_per 布尔默认值 FALSE, change_people_per 布尔默认值 FALSE, add_people_per 布尔默认值 FALSE, remove_people_per 布尔默认值 FALSE, see_album_per BOOLEAN DEFAULT FALSE, add_album_per 布尔默认值 FALSE, change_album_per 布尔默认值 FALSE, remove_album_per 布尔默认值 FALSE, see_music_per 布尔默认值 FALSE, add_music_per 布尔默认值 FALSE, change_music_per 布尔默认值 FALSE, remove_music_per 布尔默认值 FALSE, admin_per 布尔默认值 FALSE, yahoo_per 布尔默认值 FALSE, status_per 布尔默认值 FALSE, pm_per 布尔默认值 FALSE, ip_blocking_per 布尔默认值 FALSE );
但是当我在 phpmyadmin 中查看时,BOOLEAN 字段是 tinyint(1),默认情况下它们是 0。我可以让1 成为TRUE。但是当我在我的 PHP 代码中使用 === 时,它们无法转换。 (我应该在if、for、while 中使用==,我认为它会在我的系统中产生一些错误。)
那么,我该如何解决呢?默认情况下,我应该如何从 mysql 获取 BOOLEAN?
【问题讨论】:
-
根据stackoverflow.com/questions/289727/…
BOOLEAN只是TINYINT(1)的别名 - 零值为假,非零值为真。为什么需要它与===进行比较? PHP 应该处理true/false到 1/0 的转换。 -
你不能直接得到布尔值。
-
@SebastianWramba:我认为它会更快,而不是说 php 将 1 转换为 TRUE 。
-
这听起来像是过早的优化,这意味着:不要关心转换(因为这是必要的,请参阅 ThiefMaster 的回答),只需使用
==。