<?php
$link = new \PDO('mysql:host=localhost;dbname=test', 'user', 'password');
//WORKS: INSERT, followed by SELECT, followed UPDATE
//Output:
//Rowset 1
//Rowset 2
//Results detected
$handle1 = $link->prepare('insert into testtable(id) values(1);
select * from testtable where id = ?;
update testtable set id = 2 where id = ?;');
$handle1->bindValue('1', '1');
$handle1->bindValue('2', '1');
$handle1->execute();
$i = 1;
print("Handle 1:\n");
do{
print('Rowset ' . $i++ . "\n");
if($handle1->columnCount() > 0)
print("Results detected\n");
}while($handle1->nextRowset());
//WORKS: SELECT, followed by UPDATE
//Output:
//Rowset 1
//Results detected
$handle2 = $link->prepare('select * from testtable where id = ?;
update testtable set id = 1 where id = ?;');
$handle2->bindValue('1', '2');
$handle2->bindValue('2', '2');
$handle2->execute();
$i = 1;
print("Handle 2:\n");
do{
print('Rowset ' . $i++ . "\n");
if($handle2->columnCount() > 0)
print("Results detected\n");
}while($handle2->nextRowset());
//WORKS: UPDATE, followed by SELECT
//Output:
//Rowset 1
//Rowset 2
//Results detected
$handle3 = $link->prepare('update testtable set id = 2 where id = ?;
select * from testtable where id = ?;');
$handle3->bindValue('1', '1');
$handle3->bindValue('2', '2');
$handle3->execute();
$i = 1;
print("Handle 3:\n");
do{
print('Rowset ' . $i++ . "\n");
if($handle3->columnCount() > 0)
print("Results detected\n");
}while($handle3->nextRowset());
//DOESN'T WORK: INSERT, followed by UPDATE, followed by SELECT
//Output:
//Rowset 1
//Expected output: same as examples 1 and 3
$handle4 = $link->prepare('insert into testtable(id) values(3);
update testtable set id = 2 where id = ?;
select * from testtable where id = ?;');
$handle4->bindValue('1', '3');
$handle4->bindValue('2', '2');
$handle4->execute();
$i = 1;
print("Handle 4:\n");
do{
print('Rowset ' . $i++ . "\n");
if($handle1->columnCount() > 0)
print("Results detected\n");
}while($handle1->nextRowset());
?>