我正在对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字段的任何想法?
答案 0 :(得分:0)
你可以简单地尝试这个(适用于mysql位类型):
$row->MyBitField = new Zend_Db_Expr($data['MyBitField']);