diff --git a/www/admin/class_test.db.php b/www/admin/class_test.db.php index adb6e8b9..bff2aeeb 100644 --- a/www/admin/class_test.db.php +++ b/www/admin/class_test.db.php @@ -38,7 +38,9 @@ print ""; print "" . $PAGE_NAME . ""; print ""; print '
Class Test Master
'; +print '
Class Test DB Types
'; print '
Class Test DB dbReturn
'; +print '
Class Test DB Single Aciont
'; print '

' . $PAGE_NAME . '

'; print "LOGFILE NAME: " . $db->log->getLogFile() . "
"; @@ -170,10 +172,10 @@ print "EOM READ OF PREVIOUS INSERTED: " . print_r($db->dbReturnRow($query), true print "LAST ERROR: " . $db->dbGetLastError() . "
"; print "
"; $query = <<dbReturnRowParams( @@ -334,10 +336,10 @@ $status = $db->dbExecParams($query_insert, $query_params); echo "*
"; echo "EOM STRING WITH MORE THAN 10 PARAMETERS: " . Support::printToString($query_params) . " |
" - . " |
" - . "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | " - . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " - . "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) + . "QUERY: " . $db->dbGetQuery() . " |
" + . "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " |
" + . "RETURNING EXT:
" . print_r($db->dbGetReturningExt(), true) . "
|
" + . "RETURNING RETURN:
" . print_r($db->dbGetReturningArray(), true) . "
|
" . "ERROR: " . $db->dbGetLastError(true) . "
"; echo "
"; // binary insert tests @@ -355,10 +357,10 @@ $status = $db->dbExec($query); $__last_insert_id = $db->dbGetInsertPK(); print "BINARY DATA INSERT: " . Support::printToString($status) . " |
" - . " |
" - . "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | " - . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " - . "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) + . "QUERY: " . $db->dbGetQuery() . " |
" + . "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " |
" + . "RETURNING EXT:
" . print_r($db->dbGetReturningExt(), true) . "
|
" + . "RETURNING RETURN:
" . print_r($db->dbGetReturningArray(), true) . "
|
" . "ERROR: " . $db->dbGetLastError(true) . "
"; echo "*
"; @@ -369,7 +371,11 @@ INSERT INTO binary_test ( $1, $2, $3 ) SQL; -$status = $db->dbExecParams($query, [$filename, $rand_bin_uid, $binary_data]); +// $binary_data is dbEscapedBytea! +$uniqid = \CoreLibs\Create\Uids::uniqIdShort(); +$status = $db->dbExecParams($query, [ + 'class_test.db.php', $uniqid, $binary_data +]); $__last_insert_id = $db->dbGetInsertPK(); print "BINARY DATA INSERT PARAMS: " . Support::printToString($status) . " |
" @@ -378,7 +384,23 @@ print "BINARY DATA INSERT PARAMS: " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "ERROR: " . $db->dbGetLastError(true) . "
"; - +print "BINARY READER: "; +$query = <<dbReturnRowParams($query, [$uniqid]); +if (is_array($res)) { + var_dump($res); + $file = $db->dbUnescapeBytea($res['binary_data']); + // var_dump($file); +} else { + print "Execute error"; +} echo "
"; // returning test with multiple entries @@ -578,6 +600,44 @@ while ( } echo "
"; +print "DB RETURN PARAMS LIKE
"; +$q = <<dbReturnParams($q, ['%string%'])) +) { + print "ROW:
" . print_r($res, true) . "

"; +} +echo "
"; + +print "DB RETURN PARAMS ANY
"; +$q = <<dbReturnParams($q, [$query_value])) +) { + print "ROW:
" . print_r($res, true) . "

"; +} +echo "
"; + +print "COMPOSITE ELEMENT READ
"; +$res = $db->dbReturnRow("SELECT item, count, (item).name, (item).price, (item).supplier_id FROM on_hand"); +print "ROW:
" . print_r($res) . "
"; +var_dump($res); +print "Field Name/Types:
" . print_r($db->dbGetFieldNameTypes(), true) . "
"; +echo "
"; + // NOTE: try to replacate connection still exists if script is run a second time // open pg bouncer connection $db_pgb = new CoreLibs\DB\IO($DB_CONFIG['test_pgbouncer'] ?? [], $log); diff --git a/www/admin/class_test.db.single.php b/www/admin/class_test.db.single.php index e288cd7a..256dc902 100644 --- a/www/admin/class_test.db.single.php +++ b/www/admin/class_test.db.single.php @@ -35,7 +35,6 @@ print ""; print "" . $PAGE_NAME . ""; print ""; print '
Class Test Master
'; -print '
Class Test DB dbReturn
'; print '

' . $PAGE_NAME . '

'; print "LOGFILE NAME: " . $db->log->getLogFile() . "
"; @@ -54,38 +53,76 @@ if (($dbh = $db->dbGetDbh()) instanceof \PgSql\Connection) { print "NO DB HANDLER
"; } -// params > 10 for debug -// error catcher -$query_insert = <<"; + $dbc->dbReturnRow("SELECT test FROM test_foo LIMIT 1"); +} + +$uniqid = \CoreLibs\Create\Uids::uniqIdShort(); +$binary_data = $db->dbEscapeBytea(file_get_contents('class_test.db.php') ?: ''); $query_params = [ - 'col 1', 'col 2', 'col 3', 'col 4', 'col 5', 'col 6', 'col 7', 'col 8', - 'col 9', 'col 10', 'col 11', 'col 12', null + $uniqid, + true, + 'STRING A', + 2, + 2.5, + 1, + date('H:m:s'), + date('Y-m-d H:m:s'), + json_encode(['a' => 'string', 'b' => 1, 'c' => 1.5, 'f' => true, 'g' => ['a', 1, 1.5]]), + null, + '{"a", "b"}', + '{1,2}', + '{"(array Text A, 5, 8.8)","(array Text B, 10, 15.2)"}', + '("Text", 4, 6.3)', + $binary_data ]; + +$query_insert = <<dbExecParams($query_insert, $query_params); -echo "*
"; -echo "EOM STRING WITH MORE THAN 10 PARAMETERS: " - . Support::printToString($query_params) . " |
" - . " |
" - . "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | " - // . "RETURNING EXT: " . Support::printToString($db->dbGetReturningExt()) . " | " - . "RETURNING RETURN: " . Support::printToString($db->dbGetReturningArray()) - . "ERROR: " . $db->dbGetLastError(true) . "
"; -echo "
"; +$query_select = <<dbReturnRowParams($query_select, [$uniqid]); +if (is_array($res)) { + var_dump($res); +} + +testDBS($db); print ""; diff --git a/www/admin/class_test.db.types.php b/www/admin/class_test.db.types.php new file mode 100644 index 00000000..1b26ed50 --- /dev/null +++ b/www/admin/class_test.db.types.php @@ -0,0 +1,171 @@ + BASE . LOG, + 'log_file_id' => $LOG_FILE_ID, + 'log_per_date' => true, +]); +// db connection and attach logger +$db = new CoreLibs\DB\IO(DB_CONFIG, $log); +$db->log->debug('START', '=============================>'); + +$PAGE_NAME = 'TEST CLASS: DB COLUMN TYPES'; +print ""; +print "" . $PAGE_NAME . ""; +print ""; +print ''; +print '

' . $PAGE_NAME . '

'; + +print "LOGFILE NAME: " . $db->log->getLogFile() . "
"; +print "LOGFILE ID: " . $db->log->getLogFileId() . "
"; +print "DBINFO: " . $db->dbInfo() . "
"; +// DB client encoding +print "DB client encoding: " . $db->dbGetEncoding() . "
"; +print "DB search path: " . $db->dbGetSchema() . "
"; + +$to_db_version = '15.2'; +print "VERSION DB: " . $db->dbVersion() . "
"; +print "SERVER ENCODING: " . $db->dbVersionInfo('server_encoding') . "
"; +if (($dbh = $db->dbGetDbh()) instanceof \PgSql\Connection) { + print "ALL OUTPUT [TEST]:
" . print_r(pg_version($dbh), true) . "

"; +} else { + print "NO DB HANDLER
"; +} + +print "TRUNCATE test_foo
"; +$db->dbExec("TRUNCATE test_foo"); + +/* $q = <<dbExecParams($q); +pg_query($db->dbGetDbh(), $q); +$q = <<dbExecParams($q, ['D', '{"(a b,1,1.5)","(c,3,4.5)"}']); +$db->dbExecParams($q, ['D', '{"(array Text A, 5, 8.8)","(array Text B, 10, 15.2)"}']); + */ +$uniqid = \CoreLibs\Create\Uids::uniqIdShort(); +$binary_data = $db->dbEscapeBytea(file_get_contents('class_test.db.php') ?: ''); +$query_params = [ + $uniqid, + true, + 'STRING A', + 2, + 2.5, + 1, + date('H:m:s'), + date('Y-m-d H:i:s'), + json_encode(['a' => 'string', 'b' => 1, 'c' => 1.5, 'f' => true, 'g' => ['a', 1, 1.5]]), + null, + '{"a", "b"}', + '{1,2}', + '{"(array Text A, 5, 8.8)","(array Text B, 10, 15.2)"}', + '("Text", 4, 6.3)', + $binary_data +]; + +$query_insert = <<dbExecParams($query_insert, $query_params); +echo "*
"; +echo "INSERT ALL COLUMN TYPES: " + . Support::printToString($query_params) . " |
" + . "QUERY: " . $db->dbGetQuery() . " |
" + . "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " |
" + . "RETURNING EXT:
" . print_r($db->dbGetReturningExt(), true) . "
|
" + . "RETURNING RETURN:
" . print_r($db->dbGetReturningArray(), true) . "
 |
" + . "ERROR: " . $db->dbGetLastError(true) . "
"; +echo "
"; + +$query_select = <<dbReturnRowParams($query_select, [$uniqid]); +// auto switch: +// ^int +// bool +// with flags: +// json(b) => array +// bytes => string? or resource? +// numeric => float (can have precision cut) +$pos = 0; +$name = ''; +if (is_array($res)) { + $cursor = $db->dbGetCursor(); + var_dump($res); + print "Field Name/Types:
" . print_r($db->dbGetFieldNameTypes(), true) . "
"; + print "Get type for: 'number_a':" . $db->dbGetFieldType('number_a') . "
"; + print "Get type for: 0: " . $db->dbGetFieldType(0) . "
"; + print "Get name for: 0: " . $db->dbGetFieldName(0) . "
"; +} + +$db->dbSetConvertFlag(Convert::on); +$db->dbSetConvertFlag(Convert::json); +$db->dbSetConvertFlag(Convert::numeric); +$db->dbSetConvertFlag(Convert::bytea); +$res = $db->dbReturnRowParams($query_select, [$uniqid]); +if (is_array($res)) { + var_dump($res); +} + +print ""; + +// __END__ diff --git a/www/admin/class_test.php b/www/admin/class_test.php index 8f0e58aa..91e61713 100644 --- a/www/admin/class_test.php +++ b/www/admin/class_test.php @@ -69,6 +69,7 @@ print ""; // key: file name, value; name $test_files = [ 'class_test.db.php' => 'Class Test: DB', + 'class_test.db.types.php' => 'Class Test: DB COLUMN TYPES', 'class_test.db.single.php' => 'Class Test: DB SINGLE', 'class_test.db.dbReturn.php' => 'Class Test: DB dbReturn', 'class_test.convert.colors.php' => 'Class Test: CONVERT COLORS',