甲骨文的行为';s oci_execute(),使用PHP的oci_默认值>;5.3.2
我遇到一些使用Oracle的甲骨文的行为';s oci_execute(),使用PHP的oci_默认值>;5.3.2,php,oracle,Php,Oracle,我遇到一些使用Oracle的oci\u execute()和oci\u DEFAULT标志的遗留代码 oci_execute($this->result, OCI_DEFAULT); 但是,该服务器现在运行PHP>5.3.2。根据forOCI\u默认值: 从PHP5.3.2(PECL OCI8 1.4)起就已经过时,但仍然可以向后兼容。在新代码中使用等效的OCI_NO_AUTO_COMMIT 因此,我的问题分为两部分: 对于PHP=5.3.2中使用OCI_DEFAULT时,有效模式是什
oci\u execute()
和oci\u DEFAULT
标志的遗留代码
oci_execute($this->result, OCI_DEFAULT);
但是,该服务器现在运行PHP>5.3.2。根据forOCI\u默认值
:
从PHP5.3.2(PECL OCI8 1.4)起就已经过时,但仍然可以向后兼容。在新代码中使用等效的OCI_NO_AUTO_COMMIT
因此,我的问题分为两部分:
- 对于PHP<5.3.2,OCI_DEFAULT代表了什么
- 在PHP>=5.3.2中使用
时,有效模式是什么?(即上述代码)OCI_DEFAULT
在尝试回答第2部分时,我希望找到用于调试的
oci\u execute\u mode()。但是,AFAIK不存在此类功能。从运行脚本来看,它似乎在成功的PHP脚本结束时提交(即连接关闭时)。Web服务器应自动提交,而无需等待手动或自动提交命令。如果您想使用一组相互依赖的SQL查询来处理任何事务,我认为最好在业务层或存储过程中处理这些SQL查询,必要时可以在其中应用提交或回滚
编辑:
对于PHP<5.3.2,OCI_默认值代表什么
OCI_默认值将在您关闭连接时自动回滚。您需要显式调用oci_commit()来提交事务
在PHP>=5.3.2中使用OCI_默认值的有效模式是什么
以前的版本只有OCI_COMMIT_ON_SUCCESS和OCI_DEFAULT。在新版本中,OCI_DEFAULT只是OCI_NO_AUTO_COMMIT的别名。此前,OCI_违约会让人对其目的产生混淆。OCI8 1.4通过重命名OCI_DEFAULT添加了新模式OCI_NO_AUTO_COMMIT。OCI_DEFAULT和OCI_no_AUTO_COMMIT之间没有内部性能差异。Web服务器应自动提交,而无需手动或自动等待提交命令。如果您想使用一组相互依赖的SQL查询来处理任何事务,我认为最好在业务层或存储过程中处理这些SQL查询,必要时可以在其中应用提交或回滚
编辑:
对于PHP<5.3.2,OCI_默认值代表什么
OCI_默认值将在您关闭连接时自动回滚。您需要显式调用oci_commit()来提交事务
在PHP>=5.3.2中使用OCI_默认值的有效模式是什么
以前的版本只有OCI_COMMIT_ON_SUCCESS和OCI_DEFAULT。在新版本中,OCI_DEFAULT只是OCI_NO_AUTO_COMMIT的别名。此前,OCI_违约会让人对其目的产生混淆。OCI8 1.4通过重命名OCI_DEFAULT添加了新模式OCI_NO_AUTO_COMMIT。OCI_默认和OCI_no_AUTO_COMMIT之间没有内部性能差异
对于PHP<5.3.2,OCI_默认值代表什么
医生会回答你的第一个问题
从PHP5.3.2(PECL OCI8 1.4)起就已经过时,但仍然可以向后兼容。在新代码中使用等效的OCI_NO_AUTO_COMMIT
然后,如果您查找OCI\u NO\u AUTO\u COMMIT
不要自动提交更改。在PHP5.3.2(PECL OCI8 1.4)之前,使用OCI_DEFAULT,它是OCI_NO_AUTO_COMMIT的别名
简短回答:“OCI_DEFAULT=PHP5.3.2”=“现在不自动提交正在执行的语句。”
在PHP>=5.3.2中使用OCI_默认值的有效模式是什么?(即上述代码)
它做了与<5.3.2中相同的事情来保持向后兼容性-现在它已经过时/不推荐了。您可以使用OCI_DEFAULT或OCI_NO_AUTO_COMMIT,但您应该使用后者,因为它可能不会永远存在
对于PHP<5.3.2,OCI_默认值代表什么
医生会回答你的第一个问题
从PHP5.3.2(PECL OCI8 1.4)起就已经过时,但仍然可以向后兼容。在新代码中使用等效的OCI_NO_AUTO_COMMIT
然后,如果您查找OCI\u NO\u AUTO\u COMMIT
不要自动提交更改。在PHP5.3.2(PECL OCI8 1.4)之前,使用OCI_DEFAULT,它是OCI_NO_AUTO_COMMIT的别名
简短回答:“OCI_DEFAULT=PHP5.3.2”=“现在不自动提交正在执行的语句。”
在PHP>=5.3.2中使用OCI_默认值的有效模式是什么?(即上述代码)
它做了与<5.3.2中相同的事情来保持向后兼容性-现在它已经过时/不推荐了。您可以使用OCI_DEFAULT或OCI_NO_AUTO_COMMIT,但您应该使用后者,因为它可能不会永远存在。谢谢。但这并不能回答我的任何一个问题。您已经从PHP文档中告诉了我有关事务和关于成功时提交OCI的信息。对于PHP<5.3.2,OCI默认值代表什么?当您关闭连接时,OCI_默认值将自动回滚。在PHP>=5.3.2中使用OCI_默认值的有效模式是什么?以前的版本可能只有OCI_COMMIT_ON_SUCCESS和OCI_DEFAULT。在新版本中,OCI_DEFAULT只是OCI_NO_AUTO_COMMIT的别名。OCI_违约会让人对其目的产生混淆。我猜OCI81.4添加了新的模式OCI_NO_AUTO_COMMIT,用于重命名OCI_DEFAULT。我相信OCI_DEFAULT和OCI_no_AUTO_COMMIT之间没有内部性能差异。在将旧的PHP5.2应用程序重构为PHP7.4的过程中,我遇到了一个奇怪的情况。即使在两种情况下都使用OCI_默认值,PHP5.2上的TRX也会自动提交,但PHP7.4上的TRX不会提交。相同的代码。没有什么特别的。谢谢。但这并不能回答我的任何一个问题。您已经告诉我有关交易和成功时的OCI提交的信息