我正在对Sybase数据库使用PDO MSSQL适配器,并解决遇到的问题。还有一个棘手的问题是Zend_DB引用位字段值的实例。运行以下插入操作时:
$row=$this->createRow();
…
$row->mybitfield=$data['mybitfield'];
…
$row->save();
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()正在返回字段的位。关于如何让ZF停止引用MS SQL/Sybase位字段有什么想法吗?