Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php namespace isql;
- use rdbms\DriverManager;
- use rdbms\SQLException;
- use rdbms\SQLConnectionClosedException;
- use util\cmd\Console;
- const PROMPT = "\e[31;1m\$u@\$h \e[36;1m\$d\e[0m [\e[32;1m%s\e[0m]\n\$";
- $conn= DriverManager::getConnection($argv[1]);
- $conn->connect();
- Console::writeLine("\e[32m@", $conn, "\e[0m");
- Console::writeLine('Type "exit" to end shell');
- Console::writeLine();
- $dsn= $conn->getDSN();
- $db= $dsn->getDatabase();
- $prompt= strtr(PROMPT, ['$u' => $dsn->getUser(), '$h' => $dsn->getHost(), '$d' => $db]);
- while (null !== ($sql= Console::readLine(sprintf($prompt, $conn->hashCode())))) {
- $sql= trim($sql, '; ');
- if ('' === $sql) {
- continue;
- } else if ('exit' === $sql) {
- break;
- } else if (1 === sscanf($sql, 'use %s', $db)) {
- try {
- $conn->selectdb($db);
- $prompt= strtr(PROMPT, ['$u' => $dsn->getUser(), '$h' => $dsn->getHost(), '$d' => $db]);
- Console::writeLine();
- } catch (SQLException $e) {
- Console::writeLine("\e[31m*** ", $e->compoundMessage(), "\e[0m");
- }
- continue;
- }
- query: try {
- $q= $conn->query($sql);
- if ($q->isSuccess()) {
- Console::writeLine('OK: ', $q);
- } else {
- while ($record= $q->next()) {
- Console::writeLine($record);
- }
- }
- $q->close();
- Console::writeLine();
- } catch (SQLConnectionClosedException $e) {
- Console::writeLine("\e[31mConnection was closed, reconnecting...\e[0m");
- $conn->close();
- $conn->connect();
- $conn->selectdb($db);
- goto query;
- } catch (SQLException $e) {
- Console::writeLine("\e[31m*** ", $e->compoundMessage(), "\e[0m");
- }
- }
- $conn->close();
- Console::writeLine();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement