php pdo prepared statment-无法插入false的boolen值

siotufzp  于 2021-06-19  发布在  Mysql
关注(0)|答案(0)|浏览(155)

我正在尝试将带有pdo的布尔值插入mysqldatabase。如果 $data['age2']false 插入未发生,但如果 true 那就行了。如果我使用 ->bindParam() 方法它又起作用了。但如果可能的话,我会在一个关联数组中传递我的变量。你知道我做错了什么吗。在代码的底部,我还插入了创建表的代码(我想插入)。谢谢

<?php
$host = 'localhost';
$user = 'root';
$password = '12345';
$dbName = 'pdo';

// set DSN data sorce name
$dsn = "mysql:host={$host};dbname={$dbName}";

// create pdo instance
$pdoConn = new PDO($dsn, $user, $password);
$pdoConn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

$data = [
    ':fname' => 'Bob',
    ':sname' => 'Desaunois',
    ':age' => '18',
    ':age2' => true
];
$sql = 'INSERT INTO posts (title, body, author, is_published) VALUES (:fname, :sname, :age, :age2)';
$statement = $pdoConn->prepare($sql);

$statement->execute($data);

/*
SHOW CREATE TABLE posts;
'posts', 'CREATE TABLE `posts` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `title` char(255) NOT NULL,\n  `body` text NOT NULL,\n  `author` char(255) NOT NULL,\n  `is_published` tinyint(1) DEFAULT \'0\',\n  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=latin1'
posts, CREATE TABLE `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` char(255) NOT NULL,
  `body` text NOT NULL,
  `author` char(255) NOT NULL,
  `is_published` tinyint(1) DEFAULT '0',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=latin1

* /

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题