CoreLibs DB\IO params methods

This commit is contained in:
Clemens Schwaighofer
2023-03-28 15:39:13 +09:00
parent 7be8bb06c9
commit 35d3032df5
13 changed files with 1562 additions and 379 deletions

View File

@@ -57,7 +57,7 @@ echo "DB_CONFIG_SET constant: <pre>" . print_r(DB_CONFIG, true) . "</pre><br>";
print "DB client encoding: " . $db->dbGetEncoding() . "<br>";
print "DB search path: " . $db->dbGetSchema() . "<br>";
$to_db_version = '13.6';
$to_db_version = '15.2';
print "VERSION DB: " . $db->dbVersion() . "<br>";
print "VERSION LONG DB: " . $db->dbVersionInfo('server', false) . "<br>";
print "VERSION NUMERIC DB: " . $db->dbVersionNumeric() . "<br>";
@@ -167,15 +167,28 @@ print "DIRECT INSERT PREVIOUS INSERTED: "
. print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo "
. "WHERE test_foo_id = " . (int)$last_insert_pk), true) . "<br>";
$__last_insert_pk = (int)$last_insert_pk;
$q = <<<EOM
$query = <<<EOM
SELECT
test_foo_id, test
FROM test_foo
WHERE test_foo_id = $__last_insert_pk;
EOM;
print "EOM READ OF PREVIOUS INSERTED: " . print_r($db->dbReturnRow($query), true) . "<br>";
print "LAST ERROR: " . $db->dbGetLastError() . "<br>";
print "<br>";
$query = <<<EOM
SELECT
test_foo_id, test
FROM test_foo
WHERE test_foo_id = $__last_insert_pk;
WHERE test_foo_id = $1;
EOM;
print "EOM READ OF PREVIOUS INSERTED: " . print_r($db->dbReturnRow($q), true) . "<br>";
print "LAST ERROR: " . $db->dbGetLastError() . "<br>";
print "<br>";
print "RETURN ROW PARAMS: " . print_r(
$db->dbReturnRowParams(
$query,
[$__last_insert_pk]
),
true
) . "<br>";
// PREPARED INSERT
$db->dbPrepare("ins_test_foo", "INSERT INTO test_foo (test) VALUES ($1) RETURNING test");
@@ -196,7 +209,9 @@ foreach (['pk_name', 'count', 'query', 'returning_id'] as $key) {
}
$query = <<<EOM
INSERT INTO test_foo (
INSERT INTO
test_foo
(
test
) VALUES (
$1
@@ -211,6 +226,55 @@ print "EOM STRING PREPARE INSERT[ins_test_foo_eom] STATUS: " . Support::printToS
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
$status = $db->dbExecParams($query, ['EOM BAR TEST PARAMS ' . time()]);
print "EOM STRING EXEC PARAMS INSERT[ins_test_foo_eom] STATUS: " . Support::printToString($status) . " |<br>"
. " |<br>"
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
$query = <<<EOM
INSERT INTO
test_foo
(
test, some_bool, string_a, number_a, number_a_numeric, some_time
) VALUES (
$1, $2, $3, $4, $5, $6
)
RETURNING test
EOM;
$status = $db->dbExecParams(
$query,
[
'EOM BAR TEST PARAMS MULTI ' . time(),
true,
'string a',
1,
1.5,
'1h'
]
);
$__last_insert_id = $db->dbGetInsertPK();
print "EOM STRING EXEC PARAMS MULTI INSERT[ins_test_foo_eom] STATUS: " . Support::printToString($status) . " |<br>"
. " |<br>"
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
$query = <<<EOM
SELECT
test, some_bool, string_a, number_a, number_a_numeric, some_time
FROM
test_foo
WHERE
test_foo_id = $1
EOM;
print "EOM STRING EXEC RETURN TEST: " . print_r(
$db->dbReturnRowParams(
$query,
[$__last_insert_id]
)
) . "<br>";
// returning test with multiple entries
// $status = $db->db_exec(
// "INSERT INTO test_foo (test) VALUES "
@@ -276,6 +340,7 @@ print "UPDATE WITH PK " . Support::printToString($last_insert_pk)
. "QUERY: " . $db->dbGetQuery() . " |<br>"
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
$db->dbExec("INSERT INTO test_foo (test) VALUES ('STAND ALONE')");
// INSERT WITH NO RETURNING
$status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITHOUT DATA', 456)");
@@ -294,6 +359,7 @@ print "INSERT WITH NO PRIMARY KEY WITH RETURNING STATUS: " . Support::printToStr
print "</pre>";
print "<b>PREPARE QUERIES</b><br>";
// READ PREPARE
$q_prep = "SELECT test_foo_id, test, some_bool, string_a, number_a, "
. "number_a_numeric, some_time "
@@ -303,13 +369,12 @@ $q_prep = "SELECT test_foo_id, test, some_bool, string_a, number_a, "
if ($db->dbPrepare('sel_test_foo', $q_prep) === false) {
print "Error in sel_test_foo prepare<br>";
} else {
$max_rows = 6;
// do not run this in dbFetchArray directly as
// dbFetchArray(dbExecute(...))
// this will end in an endless loop
$cursor = $db->dbExecute('sel_test_foo', []);
$i = 1;
while (($res = $db->dbFetchArray($cursor, true)) !== false) {
$cursor = $db->dbExecute('sel_test_foo', ['SOMETHING DIFFERENT']);
while (is_array($res = $db->dbFetchArray($cursor, true))) {
print "DB PREP EXEC FETCH ARR: " . $i . ": <pre>" . print_r($res, true) . "</pre><br>";
$i++;
}
@@ -322,6 +387,37 @@ if ($db->dbPrepare('sel_test_foo', $q_prep) === false) {
. "<pre>" . print_r($db->dbGetCombinedErrorHistory(), true) . "</pre><br>";
}
// sel test with ANY () type
$q_prep = "SELECT test_foo_id, test, some_bool, string_a, number_a, "
. "number_a_numeric, some_time "
. "FROM test_foo "
. "WHERE test = ANY($1) "
. "ORDER BY test_foo_id DESC LIMIT 5";
if ($db->dbPrepare('sel_test_foo_any', $q_prep) === false) {
print "Error in sel_test_foo_any prepare<br>";
} else {
// do not run this in dbFetchArray directly as
// dbFetchArray(dbExecute(...))
// this will end in an endless loop
$values = [
'SOMETHING DIFFERENT',
'STAND ALONE',
'I DO NOT EXIST'
];
$query_value = '{'
. join(',', $values)
. '}';
print "Read: $query_value<br>";
$cursor = $db->dbExecute('sel_test_foo_any', [
$query_value
]);
$i = 1;
while (($res = $db->dbFetchArray($cursor, true)) !== false) {
print "DB PREP EXEC FETCH ANY ARR: " . $i . ": <pre>" . print_r($res, true) . "</pre><br>";
$i++;
}
}
echo "<hr>";
print "EOM STYLE STRINGS<br>";
$test_bar = $db->dbEscapeLiteral('SOMETHING DIFFERENT');
@@ -338,6 +434,21 @@ while (is_array($res = $db->dbReturn($q))) {
print "ROW: <pre>" . print_r($res, true) . "</pre><br>";
}
echo "<hr>";
print "DB RETURN PARAMS<br>";
$q = <<<EOM
SELECT test_foo_id, test, some_bool, string_a, number_a,
-- comment
number_a_numeric, some_time
FROM test_foo
WHERE test = $1
ORDER BY test_foo_id DESC LIMIT 5
EOM;
while (
is_array($res = $db->dbReturnParams($q, ['SOMETHING DIFFERENT']))
) {
print "ROW: <pre>" . print_r($res, true) . "</pre><br>";
}
echo "<hr>";
// NOTE: try to replacate connection still exists if script is run a second time
// open pg bouncer connection
@@ -418,7 +529,18 @@ print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got p
// return Array Test
$query = "SELECT type, sdate, integer FROM foobar";
$data = $db->dbReturnArray($query, true);
print "Rows: " . $db->dbGetNumRows() . ", Full foobar list: <br><pre>" . print_r($data, true) . "</pre><br>";
print "RETURN ARRAY: " . $db->dbGetNumRows() . ", Full foobar list: <br><pre>" . print_r($data, true) . "</pre><br>";
$query = <<<EOM
SELECT
type, sdate
FROM
foobar
WHERE
type = $1
EOM;
$data = $db->dbReturnArrayParams($query, ['schmalz'], true);
print "RETURN ARRAY PARAMS: " . $db->dbGetNumRows() . ", Full foobar list: <br><pre>"
. print_r($data, true) . "</pre><br>";
// trigger a warning
print "<b>WARNING NEXT</b><br>";

View File

@@ -46,6 +46,14 @@ $smarty = new CoreLibs\Template\SmartyExtend(
CACHE_ID,
COMPILE_ID,
);
$adm = new CoreLibs\Admin\Backend(
new CoreLibs\DB\IO(DB_CONFIG, $log),
$log,
new CoreLibs\Create\Session(EDIT_SESSION_NAME),
$l10n,
80
);
$adm->DATA['adm_set'] = 'SET from admin class';
$PAGE_NAME = 'TEST CLASS: SMARTY';
print "<!DOCTYPE html>";
@@ -146,8 +154,10 @@ $smarty->setSmartyVarsAdmin(
'admin_stylesheet' => ADMIN_STYLESHEET,
'admin_javascript' => ADMIN_JAVASCRIPT,
'page_width' => PAGE_WIDTH,
'content_path' => CONTENT_PATH,
'user_name' => $_SESSION['USER_NAME'] ?? ''
]
],
$adm
);
// error message

View File

@@ -6,14 +6,12 @@
declare(strict_types=1);
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
$DEBUG_ALL = 1;
$PRINT_ALL = 1;
$DB_DEBUG = 1;
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
$DEBUG_ALL = true;
$PRINT_ALL = true;
$DB_DEBUG = true;
if ($DEBUG_ALL) {
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
}
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
ob_start();
@@ -25,8 +23,8 @@ require 'config.php';
$LOG_FILE_ID = 'classTest-VarIsType';
ob_end_flush();
use CoreLibs\Convert\VarSetType;
use CoreLibs\Convert\VarSetTypeNull;
use CoreLibs\Convert\SetVarType;
use CoreLibs\Convert\SetVarTypeNull;
use CoreLibs\Debug\Support;
$log = new CoreLibs\Debug\Logging([
@@ -35,9 +33,9 @@ $log = new CoreLibs\Debug\Logging([
// add file date
'print_file_date' => true,
// set debug and print flags
'debug_all' => $DEBUG_ALL ?? false,
'debug_all' => $DEBUG_ALL,
'echo_all' => $ECHO_ALL ?? false,
'print_all' => $PRINT_ALL ?? false,
'print_all' => $PRINT_ALL,
]);
$PAGE_NAME = 'TEST CLASS: CONVERT\VARISTYPE';
@@ -48,28 +46,28 @@ print '<div><a href="class_test.php">Class Test Master</a></div>';
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
print "Test A str set: " . VarSetType::setStr(5, 'set int') . "<br>";
print "Test A str make int: " . VarSetType::makeStr(5, 'make int') . "<br>";
print "Test A str make object: " . VarSetType::makeStr($log, 'Object') . "<br>";
print "Test A str make null: " . VarSetType::makeStr(null, 'null') . "<br>";
print "Test B int set: " . VarSetType::setInt("5", -1) . "<br>";
print "Test B int make string: " . VarSetType::makeInt("5", -1) . "<br>";
print "Test B' int make float: " . VarSetType::makeInt("5.5", -1) . "<br>";
print "Test B'' int make class: " . VarSetType::makeInt($log, -1) . "<br>";
print "Test B''' int make hex: " . VarSetType::makeInt("0x55", -1) . "<br>";
print "Test B''' int make hex: " . VarSetType::makeInt(0x55, -1) . "<br>";
print "Test C float make: " . VarSetType::makeFloat("13,232.95", -1) . "<br>";
print "Test A str set: " . SetVarType::setStr(5, 'set int') . "<br>";
print "Test A str make int: " . SetVarType::makeStr(5, 'make int') . "<br>";
print "Test A str make object: " . SetVarType::makeStr($log, 'Object') . "<br>";
print "Test A str make null: " . SetVarType::makeStr(null, 'null') . "<br>";
print "Test B int set: " . SetVarType::setInt("5", -1) . "<br>";
print "Test B int make string: " . SetVarType::makeInt("5", -1) . "<br>";
print "Test B' int make float: " . SetVarType::makeInt("5.5", -1) . "<br>";
print "Test B'' int make class: " . SetVarType::makeInt($log, -1) . "<br>";
print "Test B''' int make hex: " . SetVarType::makeInt("0x55", -1) . "<br>";
print "Test B''' int make hex: " . SetVarType::makeInt(0x55, -1) . "<br>";
print "Test C float make: " . SetVarType::makeFloat("13,232.95", -1) . "<br>";
print "Test D floatval: " . floatval("13,232.95") . "<br>";
print "Test E filter_var: "
. filter_var("13,232.95", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION) . "<br>";
print "Test F filter_var: "
. filter_var("string", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION) . "<br>";
print "Test G make bool: " . VarSetType::makeBool("on") . "<br>";
print "Test G make bool: " . VarSetType::makeBool(null) . "<br>";
print "Test G make bool: " . VarSetType::makeBool("null") . "<br>";
print "Test G make bool: " . VarSetType::makeBool($log) . "<br>";
print "Test G make bool: " . VarSetTypeNull::makeBool($log) . "<br>";
print "Test G make bool: " . SetVarType::makeBool("on") . "<br>";
print "Test G make bool: " . SetVarType::makeBool(null) . "<br>";
print "Test G make bool: " . SetVarType::makeBool("null") . "<br>";
print "Test G make bool: " . SetVarType::makeBool($log) . "<br>";
print "Test G make bool: " . SetVarTypeNull::makeBool($log) . "<br>";
print "<hr>";
@@ -84,30 +82,30 @@ $checks = [
foreach ($checks as $string) {
print "** SET NOT NULL: (" . gettype($string) . ")<br>";
print "Str: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetType::setStr($string)) . "-<br>";
. Support::printToString(SetVarType::setStr($string)) . "-<br>";
print "Int: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetType::setInt($string)) . "-<br>";
. Support::printToString(SetVarType::setInt($string)) . "-<br>";
print "Float: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetType::setFloat($string)) . "-<br>";
. Support::printToString(SetVarType::setFloat($string)) . "-<br>";
print "Bool: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetType::setBool($string)) . "-<br>";
. Support::printToString(SetVarType::setBool($string)) . "-<br>";
print "Array: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetType::setArray($string)) . "-<br>";
. Support::printToString(SetVarType::setArray($string)) . "-<br>";
print "<hr>";
}
foreach ($checks as $string) {
print "** SET NULL: (" . gettype($string) . ")<br>";
print "Str: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetTypeNull::setStr($string)) . "-<br>";
. Support::printToString(SetVarTypeNull::setStr($string)) . "-<br>";
print "Int: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetTypeNull::setInt($string)) . "-<br>";
. Support::printToString(SetVarTypeNull::setInt($string)) . "-<br>";
print "Float: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetTypeNull::setFloat($string)) . "-<br>";
. Support::printToString(SetVarTypeNull::setFloat($string)) . "-<br>";
print "Bool: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetTypeNull::setBool($string)) . "-<br>";
. Support::printToString(SetVarTypeNull::setBool($string)) . "-<br>";
print "Array: " . Support::printToString($string) . ": -"
. Support::printToString(VarSetTypeNull::setArray($string)) . "-<br>";
. Support::printToString(SetVarTypeNull::setArray($string)) . "-<br>";
print "<hr>";
}