问题 如何更新mysql中的布尔值? [关闭]


我的桌子有一个 isSuccessful 我将数据类型设置为boolean(0表示false,1表示true),默认为0。

但是,当我想使用php更新此列时,

UPDATE .......... SET isSuccessful = 1 WHERE .........

它不起作用。

我试着设置 isSuccessful 1,是的,是的,但是没有一个能起作用。

那么我怎样才能改变它的值 isSuccessful


8145
2017-10-05 00:13


起源

你描述的应该有用。你必须做错其他事。请发布完整查询。 - Hammerite
定义“不起作用”。你收到错误了吗?您可以在管理界面中手动设置值吗?你确定你的 WHERE 子句匹配什么? - deceze♦
你得到了什么错误? SET isSuccessful = 1 从那以后,这对我有用。 - Coyote
问题可能出在PHP代码中。告诉我们你得到的一些错误。 - ypercubeᵀᴹ
谢谢大家,我犯了一个愚蠢的错误,上面的代码有效。 - LifeOnCodes


答案:


一个简单的更新查询就足够了。布尔字段只是tinyint(1)字段,并且接受1和0的别名分别为true和false(作为字符串)。以下应该没问题。也许如果您发布了您的确切查询而不是删节版本,有人可能会发现问题?

UPDATE `table` SET `isSuccessful` = 1 WHERE `column` = 'criteria'

17
2017-10-05 00:22



从 dev.mysql.com/doc/refman/5.0/en/numeric-types.html : As of MySQL 5.0.3, a BIT data type is available for storing bit-field values. (Before 5.0.3, MySQL interprets BIT as TINYINT(1).) In MySQL 5.0.3, BIT is supported only for MyISAM. MySQL 5.0.5 extends BIT support to MEMORY, InnoDB, BDB, and NDBCLUSTER. - ypercubeᵀᴹ
您还可以使用: SET isSuccessful = b'1' - ypercubeᵀᴹ
@ypercube这假设OP将数据类型设置为BIT。但是,这意味着设置了数据类型BOOLEAN,这意味着它是一个TINYINT字段。 BOOL,BOOLEAN这些类型是TINYINT(1)的同义词。值为零被视为false。非零值被认为是真实的。从 dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html 意思是不是 set isSuccessful = b'1' 不行吗? - Ben Swinburne
你是对的, BOOLEAN 落入 TINYINT。我的错。 - ypercubeᵀᴹ
set isSuccessful = b'1' 也会工作(铸造位到tinyint)。 - ypercubeᵀᴹ


确保你把这个“`”字符与键盘上“1”键的左侧大小的“〜”键相同,如果你在linux下使用PHP + Mysql,应该这样做。


-1
2017-10-05 04:00



`是可选的.. - Qix
不是每个人都有美国布局 - beppe9000