我在没有 ORM 的情况下独立使用 DBAL,因为我不需要它。但是,我现在在查询中使用 oracle 关键字时遇到了一些问题。例如我有以下代码:
$journal = array(
'LGM_ID' => 'SEQ_JOURNAL.NEXTVAL',
'LGM_USER_LOGIN' => "a user",
'LGM_DATE' => 'CURRENT_TIMESTAMP'
);
$db->insert('JOURNAL', $journal);
这不起作用,我收到以下错误:
ORA-01722: invalid number
我认为这是因为使用了序列。用整数替换数组中的第一项后,出现以下错误:
ORA-01858: a non-numeric character was found where a numeric was expected
这次我认为是因为 CURRENT_TIMESTAMP 关键字。
我认为在传递查询关键字时最后会转换为字符串并且它不起作用。有没有办法使用序列或其他关键字而不使用像 ORM 这样的额外东西?
对于序列,我认为我可以在获取 nextval 之前运行另一个请求。但是,对于 CURRENT_TIMESTAMP,我真的不想使用 php 日期时间,因为我的日期是分时的,它会为 oracle 完美处理的函数添加太多额外代码。
我的最后一个解决方案是将完整的查询编写为字符串并使用 $db->query(...) 但这不是抽象层的目标。
非常感谢你的帮助。