real_escape_string((string)$v); } return addslashes((string)$v); } } if (!function_exists('fetch_all_assoc')) { function fetch_all_assoc($db, $sql) { if (!($db instanceof mysqli)) return []; $res = $db->query($sql); return $res ? $res->fetch_all(MYSQLI_ASSOC) : []; } } if (!function_exists('col_exists')) { function col_exists($db, $table, $col) { if (!($db instanceof mysqli)) return false; $t = $db->real_escape_string($table); $c = $db->real_escape_string($col); $res = $db->query("SHOW COLUMNS FROM `{$t}` LIKE '{$c}'"); return ($res && $res->num_rows > 0); } } // expose a convenience variable for scripts that expect $db // Do not overwrite an existing $db if present if (!isset($db) || !($db instanceof mysqli)) { $maybe = billing_get_db(); if ($maybe instanceof mysqli) { $db = $maybe; } } // End bootstrap