Scriptlog Docs

Scriptlog Documentation

Code reference for the Scriptlog codebase

User Tools

Site Tools


scriptlog:lib:core:db

This is an old revision of the document!


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.

scriptlog/lib/core/db.1790413761.txt.gz · Last modified: by admin