123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- --TEST--
- Bug #47803 Executing prepared statements is successful only for the first two statements
- --EXTENSIONS--
- odbc
- --SKIPIF--
- <?php include 'skipif.inc'; ?>
- --FILE--
- <?php
- include __DIR__ . "/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);
- ?>
- --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"
- }
- --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);
- ?>
|