]> granicus.if.org Git - php/commitdiff
add test for bug #47803
authorAnatol Belski <ab@php.net>
Wed, 24 Feb 2016 10:49:02 +0000 (11:49 +0100)
committerAnatol Belski <ab@php.net>
Wed, 24 Feb 2016 10:49:02 +0000 (11:49 +0100)
ext/odbc/tests/bug47803.phpt [new file with mode: 0644]

diff --git a/ext/odbc/tests/bug47803.phpt b/ext/odbc/tests/bug47803.phpt
new file mode 100644 (file)
index 0000000..9a2600d
--- /dev/null
@@ -0,0 +1,185 @@
+--TEST--
+Bug #47803 Executing prepared statements is succesfull only for the first two statements
+--SKIPIF--
+<?php include 'skipif.inc'; ?>
+--FILE--
+<?php
+
+include dirname(__FILE__) . "/config.inc";
+
+$create_table = "CREATE TABLE FOO(
+               [PAR_ID] [int] NOT NULL,
+               [PAR_INT] [int] NULL,
+               [PAR_CHR] [varchar](500) NULL
+)";
+
+$inserts = "INSERT INTO FOO
+           ([PAR_ID]
+           ,[PAR_INT]
+           ,[PAR_CHR])
+     VALUES
+        (1,14,''),
+               (2,30,''),
+               (3,7,''),
+               (4,7,''),
+               (5,0,''),
+               (6,0,''),
+               (7,20130901,''),
+               (8,20140201,''),
+               (9,20140201,''),
+               (10,20140620,''),
+               (11,221,'')";
+
+
+date_default_timezone_set('Europe/Warsaw');
+
+$link = odbc_connect($dsn, $user, $pass);
+
+odbc_exec($link, 'CREATE DATABASE odbcTEST');
+odbc_exec($link, $create_table);
+odbc_exec($link, $inserts);
+
+$upd_params = array(
+       array('id'=>1, 'name'=>'test 1'),
+       array('id'=>2, 'name'=>'test 2'),
+       array('id'=>3, 'name'=>'test 3'),
+       array('id'=>4, 'name'=>'test 4'),
+       array('id'=>5, 'name'=>'test 5'),
+       array('id'=>10, 'name'=>'test 10'),
+       array('id'=>9, 'name'=>'test 9'),
+       array('id'=>8, 'name'=>'test 8'),
+       array('id'=>7, 'name'=>'test 7'),
+       array('id'=>6, 'name'=>'test 6'),
+);
+$sql = "UPDATE FOO
+     SET [PAR_CHR] = ?
+     WHERE [PAR_ID] = ?";
+$result = odbc_prepare($link, $sql);
+if (!$result) {
+       print ('[sql] prep: '.$sql);
+       goto out;
+}
+foreach ($upd_params as &$k) {
+       if(!odbc_execute($result, array($k['name'], $k['id']))) {
+               print ('[sql] exec: '."array({$k['name']}, {$k['id']})");
+               goto out;
+       }
+}
+odbc_free_result($result);
+
+$sql = "SELECT * FROM FOO WHERE [PAR_ID] = ?";
+$result = odbc_prepare($link, $sql);
+if (!$result) {
+       print ('[sql] prep: '.$sql);
+       goto out;
+}
+foreach ($upd_params as $k) { 
+       if(!odbc_execute($result, array($k['id']))) {
+               print ('[sql] exec: '."array({$k['id']})");
+               goto out;
+       }
+       while (($r = odbc_fetch_array($result)) !== false) {
+               var_dump($r);
+       }
+}
+
+out:
+if ($result) odbc_free_result($result);
+odbc_close($link);
+
+?>
+==DONE==
+--EXPECT--
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "1"
+  ["PAR_INT"]=>
+  string(2) "14"
+  ["PAR_CHR"]=>
+  string(6) "test 1"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "2"
+  ["PAR_INT"]=>
+  string(2) "30"
+  ["PAR_CHR"]=>
+  string(6) "test 2"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "3"
+  ["PAR_INT"]=>
+  string(1) "7"
+  ["PAR_CHR"]=>
+  string(6) "test 3"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "4"
+  ["PAR_INT"]=>
+  string(1) "7"
+  ["PAR_CHR"]=>
+  string(6) "test 4"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "5"
+  ["PAR_INT"]=>
+  string(1) "0"
+  ["PAR_CHR"]=>
+  string(6) "test 5"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(2) "10"
+  ["PAR_INT"]=>
+  string(8) "20140620"
+  ["PAR_CHR"]=>
+  string(7) "test 10"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "9"
+  ["PAR_INT"]=>
+  string(8) "20140201"
+  ["PAR_CHR"]=>
+  string(6) "test 9"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "8"
+  ["PAR_INT"]=>
+  string(8) "20140201"
+  ["PAR_CHR"]=>
+  string(6) "test 8"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "7"
+  ["PAR_INT"]=>
+  string(8) "20130901"
+  ["PAR_CHR"]=>
+  string(6) "test 7"
+}
+array(3) {
+  ["PAR_ID"]=>
+  string(1) "7"
+  ["PAR_INT"]=>
+  string(8) "20130901"
+  ["PAR_CHR"]=>
+  string(6) "test 7"
+}
+==DONE==
+--CLEAN--
+<?php
+include 'config.inc';
+
+$conn = odbc_connect($dsn, $user, $pass);
+
+odbc_exec($conn, 'DROP TABLE FOO');
+odbc_exec($conn, 'DROP DATABASE odbcTEST');
+
+odbc_close($conn);
+
+?>