This is an old revision of the document!
Table of Contents
Db
Layer: Core · Source: lib/core/Db.php:22 (lines 22–519)
class Db implements DbInterface
This class provides a database abstraction layer using PDO with MySQL functionality. It implements all methods defined in DbInterface for consistent database operations.
Docblock Metadata
^ Tag ^ Value ^ | ''@category'' | Core Class | | ''@author'' | M.Noermoehammad | | ''@license'' | MIT | | ''@version'' | 1.0 | | ''@since'' | Since Release 1.0 | | ''@see'' | DbInterface |
Inheritance
^ Relation ^ Type ^ Meaning ^ | implements | [[scriptlog:lib:core:dbinterface|''DbInterface'']] | contract |
Constants (1)
^ Visibility ^ Name ^ Value ^ Line ^ | ''private'' | ''STATEMENT_CACHE_MAX'' | ''64;'' | 88 |
Properties (0)
None declared.
Methods (21)
^ Visibility ^ Method ^ Summary ^ Line ^ | public | ''__construct()'' | Constructor - Initializes the database connection if config is provided | 103 | | public | ''setTablePrefix()'' | Set table prefix | 115 | | public | ''getTablePrefix()'' | Get table prefix | 125 | | public | ''setDbConnection()'' | Establishes a database connection using PDO | 139 | | public | ''isConnected()'' | Checks if database connection is active | 170 | | public | ''closeDbConnection()'' | Closes the database connection | 180 | | private | ''ensureConnection()'' | Ensures database connection is established before operations | 192 | | public | ''dbQuery()'' | Executes a database query and returns the statement | 207 | | public | ''dbSelect()'' | Executes a SELECT query and returns results | 226 | | private | ''prepareCached()'' | Prepare a SQL statement with table prefix applied, reusing already | 251 | | public | ''clearStatementCache()'' | Forget all cached prepared statements. | 271 | | public | ''dbInsert()'' | Inserts a new record into the specified table | 285 | | public | ''dbLastInsertId()'' | Returns the last inserted ID | 316 | | public | ''dbUpdate()'' | Updates records in the specified table | 332 | | public | ''dbReplace()'' | Performs an INSERT or UPDATE (upsert) operation | 366 | | public | ''dbDelete()'' | Deletes records from the specified table | 405 | | public | ''dbTransaction()'' | Begins a transaction | 436 | | public | ''dbCommit()'' | Commits a transaction | 448 | | public | ''dbRollBack()'' | Rolls back a transaction | 460 | | public | ''prepare()'' | Prepare a SQL statement with table prefix applied. | 477 | | private | ''applyTablePrefix()'' | Apply table prefix to SQL query | 490 |
__construct()
public function __construct(array $config = [], array $options = [])
lines 103–108 (6)
Constructor - Initializes the database connection if config is provided
^ Parameter ^ Type ^ Default ^ Description ^ | ''$config'' | ''array'' | ''[]'' | Database configuration [DSN, username, password] | | ''$options'' | ''array'' | ''[]'' | Additional PDO connection options |
setTablePrefix()
public function setTablePrefix(string $prefix): void
lines 115–118 (4)
Set table prefix
^ Parameter ^ Type ^ Default ^ Description ^ | ''$prefix'' | ''string'' | //required// | //none// |
Returns: void
getTablePrefix()
public function getTablePrefix(): string
lines 125–128 (4)
Get table prefix
Takes no parameters.
Returns: string — string
setDbConnection()
public function setDbConnection(array $config = [], array $options = []): void
lines 139–163 (25)
Establishes a database connection using PDO
^ Parameter ^ Type ^ Default ^ Description ^ | ''$config'' | ''array'' | ''[]'' | Database configuration [DSN, username, password] | | ''$options'' | ''array'' | ''[]'' | Additional PDO connection options |
Returns: void — void
Throws: \InvalidArgumentException, \RuntimeException
isConnected()
public function isConnected(): bool
lines 170–173 (4)
Checks if database connection is active
Takes no parameters.
Returns: bool — bool True if connected, false otherwise
closeDbConnection()
public function closeDbConnection(): void
lines 180–184 (5)
Closes the database connection
Takes no parameters.
Returns: void — void
ensureConnection()
private function ensureConnection(): void
lines 192–197 (6)
Ensures database connection is established before operations
Takes no parameters.
Returns: void — void
Throws: \RuntimeException
dbQuery()
public function dbQuery(string $sql, array $args = []): \PDOStatement
lines 207–214 (8)
Executes a database query and returns the statement
^ Parameter ^ Type ^ Default ^ Description ^ | ''$sql'' | ''string'' | //required// | SQL query to execute | | ''$args'' | ''array'' | ''[]'' | Parameters for prepared statement |
Returns: \PDOStatement — \PDOStatement Executed statement
Throws: \RuntimeException
dbSelect()
public function dbSelect(string $sql, array $parameters = [], int $fetchMode = \PDO::FETCH_OBJ, string $class = ''): array
lines 226–237 (12)
Executes a SELECT query and returns results
^ Parameter ^ Type ^ Default ^ Description ^ | ''$sql'' | ''string'' | //required// | SQL SELECT query | | ''$parameters'' | ''array'' | ''[]'' | Query parameters | | ''$fetchMode'' | ''int'' | ''\PDO::FETCH_OBJ'' | PDO fetch mode (default: PDO::FETCH_OBJ) | | ''$class'' | ''string'' | '''''' | Class name for PDO::FETCH_CLASS mode |
Returns: array — array Fetched results
Throws: \RuntimeException
prepareCached()
private function prepareCached(string $sql): \PDOStatement
lines 251–261 (11)
Prepare a SQL statement with table prefix applied, reusing already
prepared statements with identical SQL text for the lifetime of the connection (request-scoped). Bound parameters are passed via execute() on each call, which PDO supports repeatedly on the same statement.
The cache is bounded to STATEMENT_CACHE_MAX entries; once full it is reset so the request continues with fresh prepares.
^ Parameter ^ Type ^ Default ^ Description ^ | ''$sql'' | ''string'' | //required// | Fully-prefixed SQL query |
Returns: \PDOStatement — \PDOStatement
clearStatementCache()
public function clearStatementCache(): void
lines 271–274 (4)
Forget all cached prepared statements.
Exposed for tests and called automatically when the connection is re-established or closed.
Takes no parameters.
Returns: void — void
dbInsert()
public function dbInsert(string $tablename, array $params): bool
lines 285–308 (24)
Inserts a new record into the specified table
^ Parameter ^ Type ^ Default ^ Description ^ | ''$tablename'' | ''string'' | //required// | Name of the table | | ''$params'' | ''array'' | //required// | Associative array of column => value pairs |
Returns: bool — bool True on success, false on failure
Throws: \InvalidArgumentException, \RuntimeException
dbLastInsertId()
public function dbLastInsertId(): string
lines 316–320 (5)
Returns the last inserted ID
Takes no parameters.
Returns: string — string Last inserted row ID
Throws: \RuntimeException
dbUpdate()
public function dbUpdate(string $tablename, array $params, array $where): int
lines 332–352 (21)
Updates records in the specified table
^ Parameter ^ Type ^ Default ^ Description ^ | ''$tablename'' | ''string'' | //required// | Name of the table | | ''$params'' | ''array'' | //required// | Associative array of column => value pairs to update | | ''$where'' | ''array'' | //required// | Associative array of conditions for WHERE clause |
Returns: int — int Number of affected rows
Throws: \InvalidArgumentException, \RuntimeException
dbReplace()
public function dbReplace(string $tablename, array $params, array $updateParams): bool
lines 366–393 (28)
Performs an INSERT or UPDATE (upsert) operation
Inserts a new record or updates existing one if duplicate key exists
^ Parameter ^ Type ^ Default ^ Description ^ | ''$tablename'' | ''string'' | //required// | Name of the table | | ''$params'' | ''array'' | //required// | Associative array of column => value pairs for insert | | ''$updateParams'' | ''array'' | //required// | Associative array of column => value pairs for update |
Returns: bool — bool True on success, false on failure
Throws: \InvalidArgumentException, \RuntimeException
dbDelete()
public function dbDelete(string $tablename, array $where, ?int $limit = null): int
lines 405–428 (24)
Deletes records from the specified table
^ Parameter ^ Type ^ Default ^ Description ^ | ''$tablename'' | ''string'' | //required// | Name of the table | | ''$where'' | ''array'' | //required// | Associative array of conditions for WHERE clause | | ''$limit'' | ''?int'' | ''null'' | Optional maximum number of rows to delete |
Returns: int — int Number of affected rows
Throws: \InvalidArgumentException, \RuntimeException
dbTransaction()
public function dbTransaction(): bool
lines 436–440 (5)
Begins a transaction
Takes no parameters.
Returns: bool — bool True on success, false on failure
Throws: \RuntimeException
dbCommit()
public function dbCommit(): bool
lines 448–452 (5)
Commits a transaction
Takes no parameters.
Returns: bool — bool True on success, false on failure
Throws: \RuntimeException
dbRollBack()
public function dbRollBack(): bool
lines 460–464 (5)
Rolls back a transaction
Takes no parameters.
Returns: bool — bool True on success, false on failure
Throws: \RuntimeException
prepare()
public function prepare(string $sql, array $driverOptions = [])
lines 477–482 (6)
Prepare a SQL statement with table prefix applied.
Delegates to PDO::prepare() after applying the configured table prefix. This enables legacy code (ApiAuth, API controllers) that calls $dbc→prepare() directly to work correctly with prefixed table names.
^ Parameter ^ Type ^ Default ^ Description ^ | ''$sql'' | ''string'' | //required// | SQL query (may contain unprefixed tbl_ names) | | ''$driverOptions'' | ''array'' | ''[]'' | Optional PDO driver options |
Returns: (none declared) — \PDOStatement|false
applyTablePrefix()
private function applyTablePrefix(string $sql): string
lines 490–518 (29)
Apply table prefix to SQL query
^ Parameter ^ Type ^ Default ^ Description ^ | ''$sql'' | ''string'' | //required// | //none// |
Returns: string — string
This page is generated from source by 'tools/gendoc'. Edits will be overwritten.
