代码之家  ›  专栏  ›  技术社区  ›  Chad Kieffer

停止Zend_DB引用Sybase位数据类型字段值

  •  0
  • Chad Kieffer  · 技术社区  · 15 年前

    我正在对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位字段有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   draganstankovic    15 年前

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

    $row->MyBitField = new Zend_Db_Expr($data['MyBitField']);
    
    推荐文章