Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codyphobe/d26e00453add6fac41dfe0d33e460c6b to your computer and use it in GitHub Desktop.
Save codyphobe/d26e00453add6fac41dfe0d33e460c6b to your computer and use it in GitHub Desktop.
Give users completely safe sandboxed raw SQL reporting abilities
<?php
// Create in-memory SQLite database
$sqlite = new PDO('sqlite::memory:');
// Generate schema (for whatever tables you want)
$sqlite->prepare('CREATE TABLE users(id, family_id, first_name, last_name, email)')->execute();
$sqlite->prepare('CREATE TABLE families(id, name, phone, address)')->execute();
// Insert pre-defined data
foreach ($users as $user) {
$sqlite->prepare('INSERT INTO users VALUES (:id, :family_id, :first_name, :last_name, :email)')->execute($user);
}
// Run custom database query
if (($query = $sqlite->prepare($request->query)) and $query->execute()) {
// Handle results on success
$results = $query->fetchAll(PDO::FETCH_ASSOC);
} else {
// Get error on failure
$error = $sqlite->errorInfo()[2];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment