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