我需要更新 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/