Php MySQL位数据类型始终变为1

Php MySQL位数据类型始终变为1,php,mysql,Php,Mysql,我面临MySQL位数据类型的一些意外行为。通过执行以下PHP代码: $query="INSERT INTO REQUESTS_OFFERS (PROPOSAL,REQUESTS_REQUESTID,PERIOD) VALUES ('".$offer."','".$requestid."','".$periodkind."')"; 位数据类型的周期列始终变为1,即使PHP变量$periodkind等于0!!我无法解释。如果试图在MySQL中手动将1更改为0,则没有问题 你知道为什么会

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

$query="INSERT INTO REQUESTS_OFFERS (PROPOSAL,REQUESTS_REQUESTID,PERIOD)
  VALUES ('".$offer."','".$requestid."','".$periodkind."')";    
位数据类型的周期列始终变为1,即使PHP变量$periodkind等于0!!我无法解释。如果试图在MySQL中手动将1更改为0,则没有问题

你知道为什么会这样吗


非常感谢

如果您的列是位数据类型,您不必将var包装到“'”中,因为它将被解释为字符串,您需要位

尝试删除单引号,如果不起作用,尝试将$periodkind转换为如下所示的bool:

(bool)$periodkind

只有当MySQL在位数据类型中将false转换为0,将true转换为1时,才使用PDO或mysqli?你为什么不使用语句准备呢

你必须这么做

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


顺便问一下,您的位类型是BIT(1)

如果您有位,为什么要像字符串一样将其环绕在
?可以想象,插入字符串
'0'
而不是整数
0
会使MySQL将其存储为
1
…您必须对此进行测试。
$query="INSERT INTO REQUESTS_OFFERS (PROPOSAL,REQUESTS_REQUESTID,PERIOD)
  VALUES ('".$offer."','".$requestid."',".$periodkind.")";