php - 参数为 false 时插入空值

标签 php mysql pdo

我试图在数据库中插入 FALSE 值,但没有任何运气 - 它插入了一个空字符串。该列是 varchar。如果我插入 TRUE 值,它会插入 1。

我正在使用 mysql、PDO 和 php。

我还使用了一个 DB 类,它除了使用 PDO 准备语句准备和执行查询之外,对查询没有做任何其他事情。

心中的查询是一个非常基本的查询:

$sql = 'INSERT INTO api_logs_values (value) VALUES (?)';

然后:

$this->_db->query($sql, array(FALSE));

知道发生了什么吗?

编辑:

添加表结构:

api_logs_values | CREATE TABLE `api_logs_values` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`log_id` int(10) unsigned NOT NULL,
`name` varchar(255) DEFAULT NULL,
`value` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `log_id` (`log_id`,`name`)
ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8

编辑 2:

我在这里找到了关于此的错误报告 https://bugs.php.net/bug.php?id=33876 ,但似乎没有合适的、好的解决方案。除了可能设置 PDO_PARAM_BOOL 属性。

编辑 3:

我发现我正在使用的 DB 类没有单独绑定(bind)参数,而是执行 ($param),并查看此处 http://php.net/manual/en/pdostatement.execute.php ,它将所有参数视为 PDO::PARAM_STR,这是不正确的。

最佳答案

如果要插入字符串“false”,则$this->_db->query($sql, array("FALSE"));

对于数据类型varchar,php值为false被认为是空字符串。

如果您希望TRUE1,而FALSE0,设置数据类型列到 tinyint

关于php - 参数为 false 时插入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891584/

相关文章:

mysql pdo : how to detect if a statement made an insert or updated a preexisting row

php - 插入MySQL "on duplicate key update"语法错误

php - jQuery : How do I put clicked element in input box?

php - Laravel 数据库外键约束不起作用

mysql - #1054 - 列不可用,但在定义中可用

mysql - 数据库设计——用户组表如何实现?

mysql - SQL 计数限制结果

PHP MySQL通过html形式插入查询,参数不通过

javascript - WooCommerce - 通过 Ajax 单击按钮即可重新加载订单

php - 谁在开发 PDO、mysql、mysqli 等 PHP 数据库扩展?