1--TEST-- 2Request #71855 (PDO placeholder escaping, part 2) 3--EXTENSIONS-- 4pdo 5pdo_pgsql 6--SKIPIF-- 7<?php 8require_once dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; 9require_once dirname(__FILE__) . '/config.inc'; 10PDOTest::skip(); 11 12$db = PDOTest::factory(); 13if (version_compare($db->getAttribute(PDO::ATTR_SERVER_VERSION), '9.4.0') < 0) { 14 die("skip Requires 9.4+"); 15} 16 17?> 18--FILE-- 19<?php 20require_once dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; 21require_once dirname(__FILE__) . '/config.inc'; 22$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); 23$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 24$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM); 25 26$jsonb = $db->quote(json_encode(['a' => 1])); 27 28foreach ([false, true] as $emulate) { 29 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, $emulate); 30 31 $stmt = $db->prepare("SELECT {$jsonb}::jsonb ?? ?"); 32 $stmt->execute(['b']); 33 var_dump($stmt->fetch()); 34 35 $stmt = $db->prepare("SELECT {$jsonb}::jsonb ???"); 36 $stmt->execute(['a']); 37 var_dump($stmt->fetch()); 38} 39 40?> 41==OK== 42--EXPECT-- 43array(1) { 44 [0]=> 45 string(1) "0" 46} 47array(1) { 48 [0]=> 49 string(1) "1" 50} 51array(1) { 52 [0]=> 53 string(1) "0" 54} 55array(1) { 56 [0]=> 57 string(1) "1" 58} 59==OK== 60