停止 Zend_Db 引用 Sybase BIT 数据类型字段值
我正在针对 Sybase 数据库使用 Pdo_Mssql 适配器并解决遇到的问题。剩下的一个令人烦恼的问题是 Zend_Db 引用 BIT 字段值的实例。运行以下插入操作时:
$row = $this->createRow(); ... $row->MyBitField = $data['MyBitField']; ... $row->save();
FreeTDS 日志输出显示:
dbutil.c:87:msgno 257:“不允许从数据类型 'VARCHAR' 到 'BIT' 的隐式转换。使用 CONVERT 函数运行此查询。
我尝试将值转换为 int 和 bool,但这似乎是一个表元数据问题,而不是输入的数据类型问题。
工作得很好,但我希望与数据库服务器无关。
幸运的是, Zend_Db_Expr CONVERT(BIT, {$data['MyBitField']})");
我已经验证describeTable()正在返回该字段的BIT。关于如何让ZF停止引用MS SQL/Sybase BIT字段有什么想法吗?
I'm using Pdo_Mssql adapter against a Sybase database and working around issues encountered. One pesky issue remaining is Zend_Db's instance on quoting BIT field values. When running the following for an insert:
$row = $this->createRow();
...
$row->MyBitField = $data['MyBitField'];
...
$row->save();
FreeTDS log output shows:
dbutil.c:87:msgno 257: "Implicit conversion from datatype 'VARCHAR' to 'BIT' is not allowed. Use the CONVERT function to run this query.
I've tried casting values as int and bool, but this seems to be a table metadata problem, not a data type problem with input.
Fortunately, Zend_Db_Expr works nicely. The following works, but I'd like to be database server agnostic.
$row->MyBitField = new Zend_Db_Expr("CONVERT(BIT, {$data['MyBitField']})");
I've verified that the describeTable() is returning BIT for the field. Any ideas on how to get ZF to stop quoting MS SQL/Sybase BIT fields?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以简单地尝试一下(适用于 mysql 位类型):
You can simply try this (works for mysql bit type):