【问题标题】:Boolean save as tinyint(1) in mysql布尔值在 mysql 中另存为 tinyint(1)
【发布时间】: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 代码中使用 === 时,它们无法转换。 (我应该在ifforwhile 中使用==,我认为它会在我的系统中产生一些错误。)

那么,我该如何解决呢?默认情况下,我应该如何从 mysql 获取 BOOLEAN?

【问题讨论】:

  • 根据stackoverflow.com/questions/289727/… BOOLEAN 只是TINYINT(1) 的别名 - 零值为假,非零值为真。为什么需要它与=== 进行比较? PHP 应该处理 true/false 到 1/0 的转换。
  • 你不能直接得到布尔值。
  • @SebastianWramba:我认为它会更快,而不是说 php 将 1 转换为 TRUE 。
  • 这听起来像是过早的优化,这意味着:不要关心转换(因为这是必要的,请参阅 ThiefMaster 的回答),只需使用 ==

标签: php mysql


【解决方案1】:

在从数据库中获取数据时,您通常只会在 PHP 中得到字符串。这些类型仅在数据库端使用。

该字段是 TINYINT,因为 MySQL 根本不包含 BOOLEAN 字段。

【讨论】:

    【解决方案2】:

    MySQL 中没有“布尔”类型。您可以在 PHP 中使用 == 签入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-14
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2022-08-05
      • 2017-03-27
      • 2020-12-10
      相关资源
      最近更新 更多