PHP PDO подготовил оценку - невозможно вставить логическое значение false - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь вставить логическое значение с PDO в базу данных MySQL.Если $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


*/
...