Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env php
- <?php
- if(!defined("STDIN")) define("STDIN", fopen("php://stdin", "R"));
- $host = "localhost";
- $user = "root";
- $password = "";
- $schema = "";
- $opts = getopt("h:u:p:s:");
- if(isset($opts["h"])) $host = $opts["h"];
- if(isset($opts["u"])) $user = $opts["u"];
- if(isset($opts["p"])) $password = $opts["p"];
- if(isset($opts["s"])) $schema = $opts["s"];
- $db = @new mysqli($host, $user, $password, $schema);
- if(isset($db->conenct_error)) die($db->connect_error);
- echo "Connected!", PHP_EOL;
- while(true){
- echo "> ";
- $line = rtrim(trim(fgets(STDIN)), ";");
- if($line === "exit") break;
- $start = microtime(true);
- $result = $db->query($line);
- $end = microtime(true);
- if($result === false){
- echo "Error: $db->error", PHP_EOL;
- }elseif($result instanceof mysqli_result){
- $cols = [];
- $rows = 0;
- while(is_array($row = $result->fetch_assoc())){
- foreach($row as $k => $v){
- if(!isset($cols[$k])) $cols[$k] = [$k];
- $cols[$k][] = $v;
- }
- $rows++;
- }
- $result->close();
- if($rows === 0){
- echo "Empty result set ";
- }else{
- $paddings = [];
- foreach($cols as $k => $v){
- $paddings[$k] = max(array_map("strlen", $v));
- }
- $len = array_sum($paddings) + 1 + count($cols) * 3;
- for($i = 0; $i <= $rows; $i++){
- if($i === 0) echo str_repeat("=", $len), PHP_EOL;
- foreach($cols as $k => $v){
- echo "| " . str_pad($v[$i], $paddings[$k], " ", STR_PAD_BOTH) . " ";
- }
- echo "|", PHP_EOL;
- if($i === 0) echo str_repeat("=", $len), PHP_EOL;
- }
- echo str_repeat("=", $len), PHP_EOL;
- echo ($rows === 1 ? "1 row" : "$rows rows") . " in result set ";
- }
- }elseif(strtoupper(substr($line, 0, 6)) === "INSERT" and isset($db->insert_id)){
- echo "Insert ID: $db->insert_id", PHP_EOL;
- }else{
- echo "Query success ";
- }
- echo "(Query completed in " . round($end - $start, 4) . " second", $end - $start > 1 ? "s" : "", ")", PHP_EOL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement