1--TEST-- 2Bug #43925 (Incorrect argument counter in prepared statements with pgsql) 3--EXTENSIONS-- 4pdo 5pdo_pgsql 6--SKIPIF-- 7<?php 8require __DIR__ . '/config.inc'; 9require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc'; 10PDOTest::skip(); 11?> 12--FILE-- 13<?php 14require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc'; 15$dbh = PDOTest::test_factory(__DIR__ . '/common.phpt'); 16 17$dbh->query(' 18CREATE TABLE test43925 19( 20 id integer NOT NULL PRIMARY KEY 21 , root integer NOT NULL 22 , lft integer NOT NULL 23 , rgt integer NOT NULL 24);'); 25 26$dbh->query('INSERT INTO test43925 (id, root, lft, rgt) VALUES (1, 1, 1, 6), (2, 1, 2, 3), (3, 1, 4, 5);'); 27 28 29$stmt = $dbh->prepare(' 30 SELECT * 31 FROM test43925 32 WHERE (:rootId > 0 OR lft > :left OR rgt > :left) 33 AND (root = :rootId OR root = :left) 34 AND (1 > :left OR 1 < :left OR 1 = :left) 35 AND (:x > 0 OR :x < 10 OR :x > 100) 36 OR :y = 1 OR :left = 1 37'); 38 39$stmt->bindValue('left', 1, PDO::PARAM_INT); 40$stmt->bindValue('rootId', 3, PDO::PARAM_INT); 41$stmt->bindValue('x', 5, PDO::PARAM_INT); 42$stmt->bindValue('y', 50, PDO::PARAM_INT); 43 44$stmt->execute(); 45 46foreach ($stmt->fetchAll() as $row) { 47 print implode(' - ', $row); 48 print "\n"; 49} 50?> 51--CLEAN-- 52<?php 53require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc'; 54$db = PDOTest::test_factory(__DIR__ . '/common.phpt'); 55$db->exec("DROP TABLE IF EXISTS test43925"); 56?> 57--EXPECT-- 581 - 1 - 1 - 1 - 1 - 1 - 6 - 6 592 - 2 - 1 - 1 - 2 - 2 - 3 - 3 603 - 3 - 1 - 1 - 4 - 4 - 5 - 5 61