xref: /php-src/ext/pdo_mysql/tests/bug_45120.phpt (revision 4bb75d56)
1--TEST--
2Bug #45120 (PDOStatement->execute() returns true then false for same statement)
3--EXTENSIONS--
4pdo_mysql
5--SKIPIF--
6<?php
7require_once __DIR__ . '/inc/mysql_pdo_test.inc';
8MySQLPDOTest::skip();
9?>
10--FILE--
11<?php
12require_once __DIR__ . '/inc/mysql_pdo_test.inc';
13$db = MySQLPDOTest::factory();
14
15function bug_45120($db) {
16    $stmt = $db->prepare("SELECT 1 AS 'one'");
17    if (true !== $stmt->execute())
18        printf("[001] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
19
20    $res = $stmt->fetch(PDO::FETCH_ASSOC);
21    if ($res['one'] != 1)
22        printf("[002] Wrong results: %s\n", var_export($res, true));
23
24    if (true !== $stmt->execute())
25        printf("[003] Execute has failed: %s\n", var_export($stmt->errorInfo(), true));
26
27    $res = $stmt->fetch(PDO::FETCH_ASSOC);
28    if ($res['one'] != 1)
29        printf("[004] Wrong results: %s\n", var_export($res, true));
30}
31
32print "Emulated Prepared Statements\n";
33$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
34bug_45120($db);
35
36print "Native Prepared Statements\n";
37$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
38bug_45120($db);
39
40print "done!";
41?>
42--EXPECT--
43Emulated Prepared Statements
44Native Prepared Statements
45done!
46