阻止Zend Db引用Sybase BIT数据类型字段值

时间:2010-09-16 19:25:14

标签: zend-framework pdo zend-db freetds sybase-ase

我正在对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字段的任何想法?

1 个答案:

答案 0 :(得分:0)

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

$row->MyBitField = new Zend_Db_Expr($data['MyBitField']);