停止 Zend_Db 引用 Sybase BIT 数据类型字段值

发布于 2024-09-19 06:10:49 字数 541 浏览 9 评论 0原文

我正在针对 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倒带 2024-09-26 06:10:49

您可以简单地尝试一下(适用于 mysql 位类型):

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

You can simply try this (works for mysql bit type):

$row->MyBitField = new Zend_Db_Expr($data['MyBitField']);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文