Skip to content

Instantly share code, notes, and snippets.

@drbyte
Forked from reinink/in-memory-sqlite-database.php
Created September 27, 2017 00:18
Show Gist options
  • Save drbyte/2224a222b3497fa0780e572b7b6697c4 to your computer and use it in GitHub Desktop.
Save drbyte/2224a222b3497fa0780e572b7b6697c4 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