ID: 13986
Updated by: sander
Reported By: [EMAIL PROTECTED]
Old Status: Feedback
Status: Closed
Bug Type: Class/Object related
Operating System: Win2k / Linux + Oracle8i+Apache
PHP Version: 4.0.6
New Comment:

No feedback. Closing.

Previous Comments:
------------------------------------------------------------------------

[2001-11-17 13:53:31] [EMAIL PROTECTED]

Do you see the same behavior when not using an object? I.e. moving all the stuff 
directly in the global namespace for testing purposes (or just use function instead of 
an object) ?



------------------------------------------------------------------------

[2001-11-13 21:56:48] [EMAIL PROTECTED]

I have just tried PHP 4.0.6. It has the same problem.

------------------------------------------------------------------------

[2001-11-09 09:41:58] [EMAIL PROTECTED]

Have you tried PHP 4.0.6 ?


------------------------------------------------------------------------

[2001-11-08 01:47:35] [EMAIL PROTECTED]

I am using a database class to manipulate data. 
I found that when the program is terminated in 
the class, the transaction will be committed, 
even I've set the mode to OCI_DEFAULT.
The same case occured in both Win2k and Linux with 
Oracle and Apache.

////////////////////////////////////////////////
//  Schema
////////////////////////////////////////////////
/*
create table test (
  id   varchar2(5) not null,
  name varchar2(10),
  primary key (id)
);

////////////////////////////////////////////////
//  Source Code
///////////////////////////////////////////////
class Database {
        var $conn, $stmt, $row_data;

        function Database()
        {
                $DB_SERVER   = "";
                $DATABASE    = "";
                $DB_USER     = "test";
                $DB_PASSWORD = "test";

                putenv($DATABASE);
                $this->conn = OCILogon($DB_USER, $DB_PASSWORD, $DB_SERVER);

                if ($this->conn == false) {
                        die("Cannot connect to server");
                }
        }

        function Query($sql)
        {
                $this->stmt = OCIParse($this->conn, $sql);
                                
                if ($this->stmt == false) {
                        die("Statement Error");
                }

                if (OCIExecute($this->stmt, OCI_DEFAULT) == false) {
                        die("Cannot Execute Statment");
                }
        }

        function Commit()
        {
                OCICommit($this->conn);
        }

        function terminate()
        {
                die(" Not OK :( ");
        }
}       

$db = new Database();
$sql = "insert into test (id, name) values ('1', '1')";
$db->Query($sql);

$db->terminate(); // This will commit the transaction, 
                  // even the program is terminated.

die(" OK :) ");   // If the program is terminated here,
                  // the transaction is rollbacked.
$db->Commit();

------------------------------------------------------------------------

[2001-11-08 01:42:41] [EMAIL PROTECTED]

I am using a database class to manipulate data. 
I found that when the problem is terminated in 
the class, the transaction will be committed, 
even I've set the mode to OCI_DEFAULT.
The same case occured in both Win2k and Linux with 
Oracle and Apache.

////////////////////////////////////////////////
//  Schema
////////////////////////////////////////////////
/*
create table test (
  id   varchar2(5) not null,
  name varchar2(10),
  primary key (id)
);

////////////////////////////////////////////////
//  Source Code
///////////////////////////////////////////////
class Database {
        var $conn, $stmt, $row_data;

        function Database()
        {
                $DB_SERVER   = "";
                $DATABASE    = "";
                $DB_USER     = "test";
                $DB_PASSWORD = "test";

                putenv($DATABASE);
                $this->conn = OCILogon($DB_USER, $DB_PASSWORD, $DB_SERVER);

                if ($this->conn == false) {
                        die("Cannot connect to server");
                }
        }

        function Query($sql)
        {
                $this->stmt = OCIParse($this->conn, $sql);
                                
                if ($this->stmt == false) {
                        die("Statement Error");
                }

                if (OCIExecute($this->stmt, OCI_DEFAULT) == false) {
                        die("Cannot Execute Statment");
                }
        }

        function Commit()
        {
                OCICommit($this->conn);
        }

        function terminate()
        {
                die(" Not OK :( ");
        }
}       

$db = new Database();
$sql = "insert into test (id, name) values ('1', '1')";
$db->Query($sql);

$db->terminate(); // This will commit the transaction, 
                  // even the program is terminated.

die(" OK :) ");   // If the program is terminated here,
                  // the transaction is rollbacked.
$db->Commit();


------------------------------------------------------------------------



Edit this bug report at http://bugs.php.net/?id=13986&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to