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 QUERY PLACEHOLDER'; print ""; print "" . $PAGE_NAME . ""; print ""; print '
Class Test Master
'; 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
"; } // REGEX for placeholder count print "Placeholder lookup regex:
" . CoreLibs\DB\Support\ConvertPlaceholder::REGEX_LOOKUP_NUMBERED . "
"; // turn on debug replace for placeholders $db->dbSetDebugReplacePlaceholder(true); print "TRUNCATE test_foo
"; $db->dbExec("TRUNCATE test_foo"); $uniqid = \CoreLibs\Create\Uids::uniqIdShort(); $binary_data = $db->dbEscapeBytea(file_get_contents('class_test.db.php') ?: ''); $query_params = [ $uniqid, // test true, // some_bool 'STRING A', // string_a 2, // number_a 2.5, // numeric_a 1, // smallint date('H:m:s'), // some_internval date('Y-m-d H:i:s'), // some_timestamp json_encode(['a' => 'string', 'b' => 1, 'c' => 1.5, 'f' => true, 'g' => ['a', 1, 1.5]]), // json_string null, // null_var '{"a", "b"}', // array_char_1 '{1,2}', // array_int_1 '{"(array Text A, 5, 8.8)","(array Text B, 10, 15.2)"}', // array_composite '("Text", 4, 6.3)', // composite_item $binary_data, // some_binary date('Y-m-d'), // some_date date('H:i:s'), // some_time '{"c", "d", "e"}', // array_char_2 '{3,4,5}', // array_int_2 12345667778818, // bigint 1.56, // numbrer_real 3.75, // number_double 124.5, // numeric_3 \CoreLibs\Create\Uids::uuidv4() // uuid_var ]; $query_insert = <<" . print_r($db->dbGetQueryParamPlaceholders($query_insert), true) . "
";
$status = $db->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 "
"; print "ANY call
"; $query = <<dbReturnParams($query, [$query_value]))) { print "Result: " . Support::prAr($res) . "
"; } echo "
"; echo "CASE part
"; $query = << 1 THEN $1 ELSE 1::INT END)::INT WHERE string_a = $2 SQL; echo "QUERY:
" . $query . "
"; $res = $db->dbExecParams($query, [1, 'foobar']); print "ERROR: " . $db->dbGetLastError(true) . "
"; echo "
"; // test connectors: = , <> () for query detection // convert placeholder tests // ? -> $n // :name -> $n // other way around (just visual) $test_queries = [ 'skip' => [ 'query' => << [], 'direction' => 'pg', ], 'numbers' => [ 'query' => << [\CoreLibs\Create\Uids::uniqIdShort(), 'string A-1', 1234], 'direction' => 'pdo', ], 'a?' => [ 'query' => << [\CoreLibs\Create\Uids::uniqIdShort(), 'string A-1', 1234], 'direction' => 'pg', ], 'b:' => [ 'query' => << [ ':test' => \CoreLibs\Create\Uids::uniqIdShort(), ':string_a' => 'string B-1', ':number_a' => 5678 ], 'direction' => 'pg', ], 'select, compare $' => [ 'query' => <<= $1 OR number_a <= $2 OR number_a > $3 OR number_a < $4 OR number_a = $5 OR number_a <> $6 SQL, 'params' => [1, 2, 3, 4, 5, 6], 'direction' => 'pg' ], ]; $db->dbSetConvertPlaceholder(true); foreach ($test_queries as $info => $data) { $query = $data['query']; $params = $data['params']; $direction = $data['direction']; // print "[$info] Convert: " // . Support::printAr(ConvertPlaceholder::convertPlaceholderInQuery($query, $params, $direction)) // . "
"; if ($db->dbCheckQueryForSelect($query)) { $row = $db->dbReturnRowParams($query, $params); print "[$info] SELECT: " . Support::prAr($row) . "
"; } else { $db->dbExecParams($query, $params); } print "ERROR: " . $db->dbGetLastError(true) . "
"; print "[$info] " . Support::printAr($db->dbGetPlaceholderConverted()) . "
"; echo "
"; } echo "dbReturn read:
"; while ( is_array($res = $db->dbReturnParams( <<RES: " . Support::prAr($res) . "
"; } print "ERROR: " . $db->dbGetLastError(true) . "
"; echo "
"; print "CursorExt: " . Support::prAr($db->dbGetCursorExt(<<"; // ERROR BELOW: missing params $res = $db->dbReturnRowParams(<<dbGetPlaceholderConverted()) . "
"; print "ERROR: " . $db->dbGetLastError(true) . "
"; echo "
"; // ERROR BELOW: LIKE cannot have placeholder echo "dbReturn read LIKE:
"; while ( is_array($res = $db->dbReturnParams( <<"; } print "PL: " . Support::PrAr($db->dbGetPlaceholderConverted()) . "
"; print "ERROR: " . $db->dbGetLastError(true) . "
"; print ""; $db->log->debug('DEBUGEND', '==================================== [END]'); // __END__