reasonableframework/helper/database.alt.php

121 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 05:40:03 +00:00
if(!check_function_exists("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']))) {
2019-02-26 05:44:54 +00:00
if(check_function_exists($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 05:40:03 +00:00
if(!check_function_exists("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(
2019-04-06 11:50:01 +00:00
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" => "mysql.cmd", "callback" => "get_db_mysql_cmd_connect"),
array("driver" => "oracle", "callback" => "get_db_oracle_connect"),
//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 05:40:03 +00:00
if(!check_function_exists("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(
2019-04-06 11:50:01 +00:00
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" => "mysql.cmd", "callback" => "exec_db_mysql_cmd_query"),
array("driver" => "oracle", "callback" => "exec_db_oracle_query"),
//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 05:40:03 +00:00
if(!check_function_exists("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(
2019-04-06 11:50:01 +00:00
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" => "mysql.cmd", "callback" => "exec_db_mysql_cmd_fetch_all"),
array("driver" => "oracle", "callback" => "exec_db_oracle_fetch_all"),
//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 05:40:03 +00:00
if(!check_function_exists("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 05:40:03 +00:00
if(!check_function_exists("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;
}
}