Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
甲骨文的行为';s oci_execute(),使用PHP的oci_默认值>;5.3.2_Php_Oracle - Fatal编程技术网

甲骨文的行为';s oci_execute(),使用PHP的oci_默认值>;5.3.2

甲骨文的行为';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时,有效模式是什

我遇到一些使用Oracle的
oci\u execute()
oci\u DEFAULT
标志的遗留代码

oci_execute($this->result, OCI_DEFAULT);
但是,该服务器现在运行PHP>5.3.2。根据for
OCI\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提交的信息