2010-09-16 89 views
0

J'utilise l'adaptateur Pdo_Mssql sur une base de données Sybase et je travaille sur les problèmes rencontrés. Un problème embêtant restant est l'instance de Zend_Db sur la citation des valeurs de champ BIT. Lors de l'exécution de ce qui suit pour une insertion:Arrêtez Zend_Db de citer des valeurs de champ de type de données Sybase BIT

$ row = $ this-> createRow(); ... $ row-> MyBitField = $ data ['MyBitField']; ... $ row-> save();

FreeTDS journal affiche de sortie:

dbutil.c: 87: MSGNO 257:.. « La conversion implicite de type de données 'VARCHAR' à 'BIT' est pas autorisé Utilisez la fonction CONVERT pour exécuter cette requête

J'ai essayé de convertir des valeurs en int et bool, mais cela semble être un problème de métadonnées de table, pas un problème de type de données avec une entrée

Heureusement, Zend_Db_Expr fonctionne bien, mais je voudrais être agnostique de serveur de base de données

$ row-> MyBitField = nouveau Zend_Db_Expr ("CONVERT (BIT, {$ data ['MyBitField']})");

J'ai vérifié que describeTable() renvoie BIT pour le champ. Des idées sur la façon d'obtenir ZF d'arrêter de citer des champs MS SQL/Sybase BIT?

+0

Il semble que pdo_mssql cite tous les types de données numériques :( –

Répondre

0

Vous pouvez simplement essayer ce (fonctionne pour le type de bit mysql):

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