Yes, this is a workaround. But it comes at a cost: Transactions are per connection, not per program. You can't rollback two SQL commands that work on two connections. You can rollback each one separately, but not both at once. And yes, this is an important difference.
If you use more than one connection, use only one distinct conection for database modifications (insert, update, delete), and the other connections only for reading (select). This way, transactions still work.
Another workaround is to buffer the results from the first SQL statement, finish() it, and then process the next SQL statement.
An even better solution is to get a proper RDBMS. There are several available, some even free as in beer and speech.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)