0

Sybaseデータベースに対してPdo_Mssqlアダプターを使用しており、発生した問題を回避しています。残っている厄介な問題の1つは、BITフィールド値の引用に関する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()がフィールドのBITを返していることを確認しました。ZFにMSSQL/ Sybase BITフィールドの引用を停止させる方法に関するアイデアはありますか?

4

1 に答える 1

0

あなたは単にこれを試すことができます(mysqlビットタイプで動作します):

$row->MyBitField = new Zend_Db_Expr($data['MyBitField']);
于 2011-03-31T18:41:17.467 に答える