0

我正在对 Sybase 数据库使用 Pdo_Mssql 适配器并解决遇到的问题。剩下的一个令人讨厌的问题是 Zend_Db 引用 BIT 字段值的实例。为插入运行以下命令时:

$row = $this->createRow(); ... $row->MyBitField = $data['MyBitField']; ... $行->保存();

FreeTDS 日志输出显示:

dbutil.c:87:msgno 257:“不允许从数据类型 'VARCHAR' 到 'BIT' 的隐式转换。使用 CONVERT 函数运行此查询。

我尝试将值转换为 int 和 bool,但这似乎是表元数据问题,而不是输入的数据类型问题。

幸运的是,Zend_Db_Expr 运行良好。以下工作,但我想成为数据库服务器不可知论者。

$row->MyBitField = new Zend_Db_Expr("CONVERT(BIT, {$data['MyBitField']})");

我已经验证 describeTable() 正在为该字段返回 BIT。关于如何让 ZF 停止引用 MS SQL/Sybase BIT 字段的任何想法?

4

1 回答 1

0

你可以简单地试试这个(适用于 mysql 位类型):

$row->MyBitField = new Zend_Db_Expr($data['MyBitField']);
于 2011-03-31T18:41:17.467 回答