MySQL BIT数据类型始终为1

时间:2015-03-06 17:17:02

标签: php mysql

我面临MySQL BIT数据类型的一些意外行为。通过执行以下PHP代码:

$query="INSERT INTO REQUESTS_OFFERS (PROPOSAL,REQUESTS_REQUESTID,PERIOD)
  VALUES ('".$offer."','".$requestid."','".$periodkind."')";    
即使PHP变量$ periodkind等于0,

BIT数据类型的句点列总是变为1!我无法解释。如果尝试在MySQL内部手动更改1到0,则没有问题...

你知道为什么会这样吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

如果您的列是BIT数据类型,则不必将var包装成“'”,因为它将被解释为字符串而您需要一点。

尝试删除单引号,如果它不起作用,请尝试将$ periodkind转换为这样的bool:

(bool)$periodkind

只有MySQL在BIT数据类型

中将false转换为0并且true为1

答案 1 :(得分:1)

你使用PDO还是mysqli?为什么不使用声明准备?

你必须这样做!

但我相信快速解决方法(删除periodkind周围的单引号):

$query="INSERT INTO REQUESTS_OFFERS (PROPOSAL,REQUESTS_REQUESTID,PERIOD)
  VALUES ('".$offer."','".$requestid."',".$periodkind.")";

你的BIT类型是 BIT(1)