@@ -14,11 +14,11 @@ const BEGIN = ['BEGIN', 'START TRANSACTION'];
14
14
const END = ['COMMIT ' , 'ROLLBACK ' ];
15
15
16
16
$ db = MySQLPDOTest::factory ();
17
- // $pdo ->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // mysql does not support
18
- for ( $ b = 0 ; $ b < count ( BEGIN ); $ b ++ ) {
19
- for ( $ e = 0 ; $ e < count ( END ); $ e ++ ) {
17
+ // $db ->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // mysql does not support
18
+ foreach ( BEGIN as $ begin ) {
19
+ foreach ( END as $ end ) {
20
20
foreach (['exec ' , 'query ' , 'execute ' ] as $ w ) {
21
- foreach ([BEGIN [ $ b ], END [ $ e ] ] as $ command ) {
21
+ foreach ([$ begin , $ end ] as $ command ) {
22
22
switch ($ w ) {
23
23
case 'exec ' :
24
24
$ db ->exec ($ command );
@@ -40,6 +40,24 @@ for ($b = 0; $b < count(BEGIN); $b++) {
40
40
}
41
41
echo "\n" ;
42
42
43
+ // Mixing PDO transaction API and explicit queries.
44
+ foreach (END as $ end ) {
45
+ $ db ->beginTransaction ();
46
+ var_dump ($ db ->inTransaction ());
47
+ $ db ->exec ($ end );
48
+ var_dump ($ db ->inTransaction ());
49
+ }
50
+
51
+ $ db ->exec ('START TRANSACTION ' );
52
+ var_dump ($ db ->inTransaction ());
53
+ $ db ->rollBack ();
54
+ var_dump ($ db ->inTransaction ());
55
+ $ db ->exec ('START TRANSACTION ' );
56
+ var_dump ($ db ->inTransaction ());
57
+ $ db ->commit ();
58
+ var_dump ($ db ->inTransaction ());
59
+ echo "\n" ;
60
+
43
61
// DDL query causes an implicit commit.
44
62
$ db ->beginTransaction ();
45
63
var_dump ($ db ->inTransaction ());
@@ -50,6 +68,7 @@ var_dump($db->inTransaction());
50
68
$ db ->beginTransaction ();
51
69
var_dump ($ db ->inTransaction ());
52
70
$ db ->commit ();
71
+ var_dump ($ db ->inTransaction ());
53
72
54
73
?>
55
74
--EXPECT--
@@ -81,3 +100,13 @@ bool(false)
81
100
bool(true)
82
101
bool(false)
83
102
bool(true)
103
+ bool(false)
104
+ bool(true)
105
+ bool(false)
106
+ bool(true)
107
+ bool(false)
108
+
109
+ bool(true)
110
+ bool(false)
111
+ bool(true)
112
+ bool(false)
0 commit comments