When a transaction modifies a table row of a database, Oracle holds that row with a lock until the transaction is committed or rolled back. The purpose of doing this is to prevent two concurrent transactions from modifying the same row.
It is important to note here that locked rows can still be read by both the transaction that updates the rows and any other transaction. The difference between the two is that the transaction holding locks on the rows can see the changes immediately after the execution of the statement affecting the rows, whereas any other transaction cannot see those changes until the transaction that made them is committed.
While the locking mechanisms used in Oracle are discussed in detail in Oracle documentation (chapter Data Concurrency and Consistency in the Oracle Database Concepts manual), this section gives a brief overview of how transaction isolation works in PHP/Oracle applications.