diff options
-rw-r--r-- | ext/pdo/tests/bug_65946.phpt | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/ext/pdo/tests/bug_65946.phpt b/ext/pdo/tests/bug_65946.phpt index 13a622ecb8..c636db5204 100644 --- a/ext/pdo/tests/bug_65946.phpt +++ b/ext/pdo/tests/bug_65946.phpt @@ -16,13 +16,22 @@ $db = PDOTest::factory(); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $db->exec('CREATE TABLE test(id int)'); $db->exec('INSERT INTO test VALUES(1)'); -if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'firebird') { - $sql = 'SELECT FIRST :limit * FROM test'; -} else if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') { - //$sql = 'SELECT * FROM test FETCH FIRST :limit ROWS ONLY'; // Oracle 12c syntax - $sql = "select id from (select a.*, rownum rnum from (SELECT * FROM test) a where rownum <= :limit)"; -} else { - $sql = 'SELECT * FROM test LIMIT :limit'; +switch ($db->getAttribute(PDO::ATTR_DRIVER_NAME)) { + case 'dblib': + // if :limit is used, the value will be quoted as '1', which is invalid syntax + // this is a bug, to be addressed separately from adding these tests to pdo_dblib + $sql = 'SELECT TOP 1 * FROM test'; + break; + case 'firebird': + $sql = 'SELECT FIRST :limit * FROM test'; + break; + case 'oci': + //$sql = 'SELECT * FROM test FETCH FIRST :limit ROWS ONLY'; // Oracle 12c syntax + $sql = "select id from (select a.*, rownum rnum from (SELECT * FROM test) a where rownum <= :limit)"; + break; + default: + $sql = 'SELECT * FROM test LIMIT :limit'; + break; } $stmt = $db->prepare($sql); $stmt->bindValue('limit', 1, PDO::PARAM_INT); |