php - 从 Zend Framework 2 在 mysql 中插入 BIT 列

标签 php mysql sql database zend-framework2

我需要更新 mysql 表中的两列。我在ZF2模型中编写了以下代码

$sql = new Sql($dbAdapter);
$update = $sql->update();
$update->table($table_name)
       ->set(array('checksum' => '', 'mailed_status' => 0))
       ->where('id = ' . $record_id);

$statement = $sql->prepareStatementForSqlObject($update);
$statement->execute();

在上面的代码中,checksum 是 varchar 列,mailed_status 是 bit 列。上述查询仅更新校验和字段,但 mailed_status 保持不变(之前为 1) 当我将 mailed_status 更新为 1 时,它起作用了。我的意思是它会将 0 更新为 1,但反之亦然不起作用。

我已经打印了查询,发现它对数字进行了引号,如下所示:“0”和“1”。

但我在这里想知道。 “1”有效,但“0”无效,为什么? 对此正确的解决方案是什么?我暂时将mysql数据库表中的bit数据类型更改为varchar(1)。

谢谢

最佳答案

那是因为更新数据库时 0 被视为 Null 值。将列类型更改为 varchar(1) 它比覆盖 sql 更新方法更简单!

关于php - 从 Zend Framework 2 在 mysql 中插入 BIT 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795705/

相关文章:

php - 从表中插入一些列值,有些是手动插入的

php - 如何在 Jquery 对话框中打开表单操作

用于删除旧记录的 MySQL 事件引发错误 #1064

sql - 向 Redshift 查询时出错

php - 将动态添加的行中的值添加到数据库中

php - mysql_affected_rows() 解决方法?

mysql - 在不同的关系上加入同一张表

mysql - 如何在 MySQL 中对多个表进行 FULL OUTER JOIN

python - python 相交数据帧,保留一个数据帧列

mysql - 错误 #1064 - 你的 SQL 语法有错误