Database path
Username
Password
Connecting..."; $dsn = 'firebird:dbname=localhost:employee;charset=utf8;'; try { // Connect to database $dbh = new \PDO($dsn, $username, $password, [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]); } catch (\PDOException $e) { echo "
Need to improve error message.
".$e->getMessage(); return false; } echo "OK.
\n

Running tests...


\n"; ?> [ 'Select rdb$relation_id as RELATION, rdb$character_set_name as CHARACTER_SET from rdb$database', '*' ] ,'Bad query' => [ 'this one should fail', '*' ] ,'Create table' => [ 'create table PHP_TEST ( x integer, c char(10), v varchar(10) )', '*' ] ,'Add field Y' => [ 'alter table PHP_TEST add y integer not null', '*' ] ,'Insert1' => [ 'insert into PHP_TEST (x,y) values (1,2)', '*' ] ,'Select1 (check)' => [ 'select x+y, x, y from PHP_TEST', [ 3,1,2 ] ] ,'Update2 X' => [ 'update PHP_TEST set x = x + 10', '*' ] ,'Select2 (check)' => [ 'select x, y from PHP_TEST', [ 11, 2 ] ] ,'Add field Z' => [ 'alter table PHP_TEST add Z decimal(16,2) default 0 not null', '*' ] ,'Update3 Z' => [ 'update PHP_TEST set z = 1', '*' ] ,'Select3 (check)' => [ 'select z, z+1, z*11, z/12.50 from PHP_TEST', [ 1, 2, 11, 0.08 ] ] ,'Update4 Z' => [ 'update PHP_TEST set z = -1', '*' ] ,'Select4 (check)' => [ 'select z, z+1, z*11, z/12.50 from PHP_TEST', [ -1, 0, -11, -0.08 ] ] ,'Update5 Z' => [ 'update PHP_TEST set z = 0.48', '*' ] ,'Select5 (check)' => [ 'select z, z+1, z*11, z/12.50 from PHP_TEST', [ 0.48, 1.48, 5.28, 0.0384 ] ] ,'Update6 Z' => [ 'update PHP_TEST set z = -0.52', '*' ] ,'Select6 (check)' => [ 'select z, z+1, z*11, z/12.50 from PHP_TEST', [ -0.52, 0.48, -5.72,-0.0416 ] ] ,'Update7 Z' => [ 'update PHP_TEST set z = 1.18', '*' ] ,'Select7 (check)' => [ 'select z, z+1, z*11, z/12.50 from PHP_TEST', [ 1.18, 2.18, 12.98, 0.0944 ] ] ,'Update8 Z' => [ 'update PHP_TEST set z = -1.38', '*' ] ,'Select8 (check)' => [ 'select z, z+1, z*11, z/12.50 from PHP_TEST', [ -1.38, -0.38, -15.18, -0.1104 ] ] ,'Update C' => [ 'update PHP_TEST set c = \'PHP test\'', '*' ] ,'Check char padding' => [ 'select c from PHP_TEST', 'PHP test ' ] // check CHAR padding ,'Update V' => [ 'update PHP_TEST set v = \'PHP test\'', '*' ] ,'Check varchar padding' => [ 'select v from PHP_TEST', 'PHP test' ] ,'Add decimal fields' => [ 'alter table PHP_TEST add d1 decimal(4,2), add d2 decimal(6,3), add d3 decimal(8,4), add d4 decimal(10,5), add d5 decimal(14,7), add d6 decimal(16,8), add dd double precision, add df float, add df16 decfloat(16), add df34 decfloat(34), add d128 int128', '*' ] ,'Update decimals' => [ 'update PHP_TEST set d1 = 12.52, d2 = 918.812, d3 = 1234.8765, d4 = 54321.06789, d5 = 6543210.1234567, d6 = 87654321.01234567, dd = 1234.5678, df = 1234.56, df16 = 1234567890.1234, df34 = ' . $bignum->__toString() . ', d128 = ' . $bignum->__toString(), '*' ] ,'Check types1' => [ 'select d1,d2,d3,dd,df from PHP_TEST', [ 12.52, 918.812, 1234.8765, 1234.5678, 1234.56 ] ] ,'Check types2' => [ 'select d4,d5,d6 from PHP_TEST', [ 54321.06789, 6543210.1234567,87654321.01234567 ] ] ,'Check types3' => [ 'select df16,df34,d128 from PHP_TEST', [ 1234567890.1234, $bignum->__toString(), $bignum->__toString() ] ] ,'Create SP' => [ 'create procedure php_test_sp returns ( x integer, c char(10), v varchar(10), d1 decimal(4,2), d2 decimal(6,3), d3 decimal(8,4), d4 decimal(10,5), d5 decimal(14,7), d6 decimal(16,8), dd double precision, df float) as BEGIN for select x, c, v, d1, d2, d3, d4, d5, d6, dd, df from php_test into :x, :c, :v, :d1, :d2, :d3, :d4, :d5, :d6, :dd, :df do suspend; END', '*' ] ,'Select SP1' => [ 'select c, v, x from php_test_sp', 'PHP test ' ] ,'Select SP2' => [ 'select d1,d2,d3,dd,df from php_test_sp', [ 12.52, 918.812, 1234.8765 ] ] ,'Select SP3' => [ 'select d4, d5, d6 from php_test_sp', [ 54321.06789, 6543210.1234567 ] ] ,'Drop SP' => [ 'drop procedure PHP_TEST_SP', '*' ] //,'' => [ '', '*' ] ]; foreach($tests as $t => $p) { $err = false; $dbh->beginTransaction(); echo "\n\n"; } echo "
Test name SQL Result Expected Commit
" . htmlspecialchars($t) . "" . htmlspecialchars($p[0]) . ""; try { $sth = $dbh->prepare($p[0]); } catch(PDOException $e) { if ($sth->errorCode() > 0) { echo ""; print_r($sth->errorInfo()); echo ""; } else { echo "".'The Prepare Failed'.""; $sth = null; } } if ($sth) { try { $err = false; $sth->execute(); } catch(PDOException $e) { echo ""; print_r($sth->errorInfo()); echo ""; } $row = $sth->fetch(PDO::FETCH_NUM); if (!$row && !$err) { echo "".'Executed OK. No Results'. ""; } else { print_results($sth, $row); } } echo ""; if (is_array($p[1]) || $p[1] != '*') { $a = []; if (!is_array($p[1])) $a[0] = $p[1]; else $a = $p[1]; for ($i = 0; $i < sizeof($a); $i++) { if ($i > 0) echo ", "; if ($a[$i] == $row[$i]) echo ''.$a[$i].''; else echo ''.$a[$i].''; } } unset($row, $err); if ($sth) $sth->closeCursor(); echo ""; try { if ( $dbh->commit() ) echo "OK."; } catch(PDOException $e) { if ($dbh->errorCode() > 0) { echo ""; print_r($sth->errorInfo()); echo ""; } else { echo "".'Error while commiting'.""; $dbh = null; } } echo "
"; echo "

\n" . htmlspecialchars('Drop Temporary Table') . htmlspecialchars(' - drop table PHP_TEST') . "
"; try { if ( $dbh->inTransaction() ) $dbh->rollBack(); $sth = $dbh->query('drop table PHP_TEST'); if ($sth) echo "".'Temporary Table Deleted'."

"; } catch(PDOException $e) { if ($sth->errorCode() > 0) { echo ""; print_r($sth->errorInfo()); echo ""; } else { echo "".'Problem Deleting Temporary Table'.""; } } echo "\n"; ?>

Testing complete.

\n"; echo ""; for ($i=0; $i < $coln; $i++) { $col_info = $sth->getColumnMeta($i); echo "\n ".$col_info['name'] ."
".$col_info['pdo_type']."
"; } echo "\n"; do { echo "\n"; for ($i=0; $i < $coln; $i++) { echo "\t".htmlspecialchars($row[$i])."\n"; } echo "\n"; } while ( $row = $sth->fetch(PDO::FETCH_NUM) ); echo "\n"; } ?>