Compare commits
4 Commits
746a24e745
...
de40a2253d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de40a2253d | ||
|
|
bd29358c57 | ||
|
|
6e7412bc51 | ||
|
|
7ba2fea659 |
85
sys/sys.php
85
sys/sys.php
@ -5,23 +5,80 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function sql_read($query) {
|
|
||||||
|
function get_db_connection($db_host = null, $db_user = null, $db_pass = null, $db_name = null) {
|
||||||
global $db;
|
global $db;
|
||||||
if (!isset($db) || is_null($db)) $db = new PDO("mysql:host=".DB_HOST.";",DB_USER,DB_PASS);
|
|
||||||
$stmt = $db->prepare($query);
|
// If custom credentials or a custom DB are provided, create a fresh, temporary connection
|
||||||
if ($stmt->execute() === false) return ["status" => "error", "query"=>$query];
|
if ($db_host !== null || $db_user !== null || $db_pass !== null || $db_name !== null) {
|
||||||
return $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$host = $db_host ?? DB_HOST;
|
||||||
|
$user = $db_user ?? DB_USER;
|
||||||
|
$pass = $db_pass ?? DB_PASS;
|
||||||
|
$name = $db_name ?? (defined('DB_NAME') ? DB_NAME : '');
|
||||||
|
|
||||||
|
$dsn_base = "mysql:host=" . $host . ";";
|
||||||
|
$dsn_full = $dsn_base . (!empty($name) ? "dbname=" . $name . ";" : "");
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new PDO($dsn_full, $user, $pass);
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
// MySQL Error 1049 is "Unknown database". If caught, fallback to connection without DB.
|
||||||
|
if (strpos($e->getMessage(), '1049') !== false) {
|
||||||
|
return new PDO($dsn_base, $user, $pass);
|
||||||
|
}
|
||||||
|
throw $e; // Re-throw if it's a real connection/auth issue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, use or initialize the global connection using constants
|
||||||
|
if (!isset($db) || is_null($db)) {
|
||||||
|
$dsn_base = "mysql:host=" . DB_HOST . ";";
|
||||||
|
$name = defined('DB_NAME') ? DB_NAME : '';
|
||||||
|
$dsn_full = $dsn_base . (!empty($name) ? "dbname=" . $name . ";" : "");
|
||||||
|
|
||||||
|
try {
|
||||||
|
$db = new PDO($dsn_full, DB_USER, DB_PASS);
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
if (strpos($e->getMessage(), '1049') !== false) {
|
||||||
|
$db = new PDO($dsn_base, DB_USER, DB_PASS);
|
||||||
|
} else {
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $db;
|
||||||
}
|
}
|
||||||
function sql_write($query) {
|
|
||||||
global $db;
|
function sql_read($query, $db_host = null, $db_user = null, $db_pass = null, $db_name = null) {
|
||||||
if (!isset($db) || is_null($db)) $db = new PDO("mysql:host=".DB_HOST.";",DB_USER,DB_PASS);
|
$pdo = get_db_connection($db_host, $db_user, $db_pass, $db_name);
|
||||||
$stmt = $db->prepare($query);
|
$stmt = $pdo->prepare($query);
|
||||||
if ($stmt->execute() === false) die ("sql error: $query");
|
|
||||||
return $stmt->rowCount();
|
if ($stmt->execute() === false) {
|
||||||
|
return ["status" => "error", "query" => $query];
|
||||||
|
}
|
||||||
|
return $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
}
|
}
|
||||||
function sql($query) {
|
|
||||||
if (strpos($query, "SELECT ") === 0) return sql_read($query);
|
function sql_write($query, $db_host = null, $db_user = null, $db_pass = null, $db_name = null) {
|
||||||
else return sql_write($query);
|
$pdo = get_db_connection($db_host, $db_user, $db_pass, $db_name);
|
||||||
|
$stmt = $pdo->prepare($query);
|
||||||
|
|
||||||
|
if ($stmt->execute() === false) {
|
||||||
|
die("sql error: $query");
|
||||||
|
}
|
||||||
|
return $stmt->rowCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
function sql($query, $db_host = null, $db_user = null, $db_pass = null, $db_name = null) {
|
||||||
|
if (
|
||||||
|
stripos(trim($query), "SHOW") === 0
|
||||||
|
|| stripos(trim($query), "DESCRIBE") === 0
|
||||||
|
|| stripos(trim($query), "SELECT") === 0
|
||||||
|
) {
|
||||||
|
return sql_read($query, $db_host, $db_user, $db_pass, $db_name);
|
||||||
|
} else {
|
||||||
|
return sql_write($query, $db_host, $db_user, $db_pass, $db_name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user