reasonableframework/helper/database.alt.php

163 lines
3.4 KiB
PHP
Raw Normal View History

2018-09-10 05:50:53 +00:00
<?php
/**
* @file database.alt.php
2018-09-10 05:50:53 +00:00
* @date 2018-09-10
* @author Go Namhyeon <gnh1201@gmail.com>
2018-09-12 01:31:16 +00:00
* @brief Database alternative driver switcher
2018-09-10 05:50:53 +00:00
*/
2019-02-26 02:39:32 +00:00
if(check_valid_function("exec_db_alt_callback")) {
2018-09-12 04:44:18 +00:00
function exec_db_alt_callback($rules, $params=array()) {
2018-09-12 02:26:11 +00:00
$result = false;
2019-02-22 16:22:39 +00:00
$db_driver = get_db_driver();
2018-09-12 02:26:11 +00:00
foreach($rules as $rule) {
2019-02-22 16:22:39 +00:00
if($rule['driver'] == $db_driver) {
2018-09-12 02:26:11 +00:00
if(loadHelper(sprintf("database.%s", $rule['driver']))) {
if(check_valid_function($rule['callback'])) {
2018-09-12 04:44:18 +00:00
if(is_array($params) && count($params) > 0) {
2018-12-29 02:48:42 +00:00
$result = call_user_func_array($rule['callback'], $params);
2018-09-12 04:44:18 +00:00
} else {
2018-09-12 04:45:16 +00:00
$result = call_user_func($rule['callback']);
2018-09-12 04:44:18 +00:00
}
}
2018-09-12 04:46:41 +00:00
} else {
set_error(sprintf("Can not load %s database driver.", $rule['driver']));
show_errors();
2018-09-12 02:26:11 +00:00
}
break;
}
}
2018-12-29 02:48:42 +00:00
2018-09-12 02:26:11 +00:00
return $result;
}
}
2019-02-26 02:39:32 +00:00
if(check_valid_function("get_db_alt_connect")) {
2018-09-10 09:02:16 +00:00
function get_db_alt_connect($driver) {
2018-09-10 05:50:53 +00:00
$conn = false;
2018-09-11 02:36:46 +00:00
$config = get_config();
2018-09-12 01:31:16 +00:00
2018-09-10 09:02:16 +00:00
$rules = array(
array(
"driver" => "mysql.pdo",
"callback" => "get_db_mysql_pdo_connect"
),
array(
"driver" => "mysql.imp",
"callback" => "get_db_mysql_imp_connect"
),
array(
"driver" => "mysql.old",
"callback" => "get_db_mysql_old_connect"
),
array(
"driver" => "oracle",
"callback" => "get_db_oracle_connect"
2018-12-29 02:48:42 +00:00
),
array(
"driver" => "pgsql",
"callback" => "get_db_pgsql_connect"
2018-09-10 09:02:16 +00:00
)
);
2018-12-29 02:48:42 +00:00
2018-09-12 02:26:11 +00:00
$conn = exec_db_alt_callback($rules);
2018-09-10 05:50:53 +00:00
2018-09-10 09:02:16 +00:00
return $conn;
}
}
2018-09-10 05:50:53 +00:00
2019-02-26 02:39:32 +00:00
if(check_valid_function("exec_db_alt_query")) {
2018-09-12 02:23:40 +00:00
function exec_db_alt_query($sql, $bind=array(), $driver="") {
2018-09-10 09:02:16 +00:00
$result = false;
2018-09-10 05:50:53 +00:00
2018-09-10 09:02:16 +00:00
$rules = array(
array(
"driver" => "mysql.pdo",
"callback" => "exec_db_mysql_pdo_query"
),
array(
"driver" => "mysql.imp",
"callback" => "exec_db_mysql_imp_query"
),
array(
"driver" => "mysql.old",
"callback" => "exec_db_mysql_old_query"
),
array(
"driver" => "oracle",
"callback" => "exec_db_oracle_query"
2018-12-29 02:48:42 +00:00
),
array(
"driver" => "pgsql",
"callback" => "exec_db_pgsql_query"
2018-09-10 09:02:16 +00:00
)
);
2018-12-29 02:48:42 +00:00
2018-09-12 04:45:16 +00:00
$result = exec_db_alt_callback($rules, array($sql, $bind));
2018-09-10 05:50:53 +00:00
2018-09-10 09:02:16 +00:00
return $result;
2018-09-10 05:50:53 +00:00
}
}
2018-09-11 02:36:46 +00:00
2019-02-26 02:39:32 +00:00
if(check_valid_function("exec_db_alt_fetch_all")) {
2018-09-11 02:36:46 +00:00
function exec_db_alt_fetch_all($sql, $bind=array()) {
$rows = array();
$rules = array(
array(
"driver" => "mysql.pdo",
"callback" => "exec_db_mysql_pdo_fetch_all"
),
array(
"driver" => "mysql.imp",
"callback" => "exec_db_mysql_imp_fetch_all"
),
array(
"driver" => "mysql.old",
"callback" => "exec_db_mysql_old_fetch_all"
),
array(
"driver" => "oracle",
"callback" => "exec_db_oracle_fetch_all"
2018-12-29 02:48:42 +00:00
),
array(
"driver" => "pgsql",
"callback" => "exec_db_pgsql_fetch_all"
)
2018-09-11 02:36:46 +00:00
);
2018-12-29 02:48:42 +00:00
2018-09-12 04:45:16 +00:00
$rows = exec_db_alt_callback($rules, array($sql, $bind));
2018-09-11 02:36:46 +00:00
return $rows;
}
}
2019-02-26 02:39:32 +00:00
if(check_valid_function("exec_db_alt_fetch")) {
2018-09-11 02:36:46 +00:00
function exec_db_alt_fetch($sql, $bind) {
$fetched = false;
$rows = exec_db_alt_fetch_all($sql, $bind);
foreach($rows as $row) {
$fetched = $row;
break;
}
return $fetched;
}
}
2018-12-29 02:48:42 +00:00
2019-02-26 02:39:32 +00:00
if(check_valid_function("get_db_alt_last_id")) {
2018-12-29 02:48:42 +00:00
function get_db_alt_last_id($driver) {
$last_id = false;
if($driver == "mysql.imp") {
$last_id = @mysqli_insert_id();
} elseif($driver == "mysql.old") {
$last_id = @mysql_insert_id();
}
return $last_id;
}
}