Always use the appropriate wrapping/escaping mechanism when generating SQL to prevent syntax errors and SQL injection vulnerabilities, especially when handling:
Always use the appropriate wrapping/escaping mechanism when generating SQL to prevent syntax errors and SQL injection vulnerabilities, especially when handling:
protected static function isFunctionalExpression(string $column): bool
{
return preg_match('/\(.+\)/', $column);
}
// Usage when building queries
$columns = collect($command->columns)
->map(fn (string $column) => self::isFunctionalExpression($column) ? $column : $this->wrap($column))
->implode(', ');
// DON'T rely on plain string interpolation
$query = "SELECT $column FROM users";
// DO use the query builder or wrap method
$query = $this->builder->select($this->wrap($column))->from('users');
wrap()
method instead of hardcoding quote characters.This practice prevents SQL errors when working with reserved words as column names, functional expressions in indexes, and ensures consistent behavior across different database systems.
Enter the URL of a public GitHub repository