很长一段时间以来,我一直使用 char(1) Y/N 方法在 Oracle 中表示布尔值,并且它通常可以很好地完成工作。但是,我无法弄清楚如何为我当前的项目安全地实施布尔值。
以前从 Oracle 返回到 PHP 的数据将用于填充具有已定义属性和类型的类。这意味着将 Y/N 转换为实际的布尔值很容易通过构造函数或其他方法在属性级别进行处理。这次我想做的有点不同。
我正在使用 Qooxdoo 框架并为其提供 JSON,然后用于动态生成模型。这里的要点是 Qooxdoo 不包含什么属性是什么类型的映射。它们在 JSON 中的内容就是它们在 Qooxdoo 中的最终结果。
当然,我不想在 Qooxdoo 中将 Y/N 值解释为布尔值,所以我的第一个动作是在 PHP 中预处理数据集,并在编码之前将 Y 和 N 转换为布尔值。理论上这一切都很好,直到有人输入他们的姓名(或任何其他字符串数据)作为 Y 或 N,这很高兴进入 Oracle,但随后作为布尔值返回。
我可以想到一些解决方案,例如使用更长更唯一的标识符,或者在 Qooxdoo 中不强制执行 Y 和 N 字符串(我最不喜欢的想法),但我欢迎任何关于如何处理这个问题的替代想法,因为我确信我'不是唯一的问题,而且这个问题不仅限于 Qooxdoo 开发。