相关疑难解决方法(0)

PDOstatement(MySQL):将值0插入位(1)字段会导致1写入表中

我正在使用bit(1)字段来存储布尔值并使用PDO预处理语句写入表中.

这是测试表:

CREATE TABLE IF NOT EXISTS `test` (
  `SomeText` varchar(255) NOT NULL,
  `TestBool` bit(1) NOT NULL DEFAULT b'0'
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

这是测试代码:

$pdo = new PDO("connection string etc") ;
$statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES (?,?)') ;
$statement->execute(array("TEST",0)) ;
Run Code Online (Sandbox Code Playgroud)

运行该代码在TestBool下给我一行值为1的行.使用bindValue()和bindParm()也是一样的.我也尝试过具有相同结果的命名占位符(而不是?).

然后我尝试了:

$statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES ("TEST",0)') ;
$statement->execute() ;
Run Code Online (Sandbox Code Playgroud)

哪个工作正常(TestBool的值为0).将SQL直接打入MySQL也行之有效.

请注意,插入1始终有效.

那么为什么占位符无法插入值0?(我怎么做呢?)

php mysql pdo prepared-statement

22
推荐指数
2
解决办法
1万
查看次数

标签 统计

mysql ×1

pdo ×1

php ×1

prepared-statement ×1