<?php
require 'kmd.php';
class kmdsybase extends kmd {
var $database = '';
function inv($host) { return $this->database . '@' . $host . '# '; }
function tab($line, $curl) { $tabs = Array(); $before = substr($line, 0, $curl); $after = substr($line, $curl); $table = ''; if ( ( stripos($before, 'SELECT ') !== false && stripos($before, ' FROM') === false ) ) { $table = 'TABLE'; preg_match_all('/FROM ([0-9a-zA-Z"_]*)/i', $line, $ms); if (isset($ms[1][0])) $table = $ms[1][0]; } if ( $table == '' && ( stripos($before, 'INSERT') !== false && stripos($before, '(') !== false ) ) { preg_match_all('/INSERT INTO ([0-9a-zA-Z"_]*)/i', $line, $ms); if (isset($ms[1][0])) $table = $ms[1][0]; } if ( $table == '' && ( stripos($before, 'UPDATE') !== false && stripos($before, 'SET') !== false ) ) { preg_match_all('/UPDATE ([0-9a-zA-Z"_]*)/i', $line, $ms); if (isset($ms[1][0])) $table = $ms[1][0]; } if ($table == '') { $sql = sybase_query("SELECT table_name FROM information_schema.tables WHERE table_type='BASE TABLE' ORDER BY table_name;"); while ($row = sybase_fetch_assoc($sql)) $tabs[$row['table_name']] = $row['table_name']; } else { if ($table != 'TABLE') { $sql = sybase_query("EXEC SP_COLUMNS $table;"); while ($row = sybase_fetch_assoc($sql)) $tabs[$row['COLUMN_NAME']] = $row['COLUMN_NAME']; } else { $sql_ = sybase_query("SELECT table_name FROM information_schema.tables WHERE table_type='BASE TABLE' ORDER BY table_name;"); while ($row_ = sybase_fetch_assoc($sql_)) { $table = $row_['table_name']; $sql = sybase_query("EXEC SP_COLUMNS $table;"); while ($row = sybase_fetch_assoc($sql)) $tabs[$row_['table_name'] . '.' . $row['COLUMN_NAME']] = $row_['table_name'] . '.' . $row['COLUMN_NAME']; } }
} return $tabs; }
function ret($line) { $ret = ''; $line = trim($line); if (substr($line, 0, 3) == 'use') { sybase_query($line); if (substr($line, -1) == ';') $line = substr($line, 0, -1); $this->database = substr($line, 4); $ret = "\n"; } elseif ($line != '') { $sql = sybase_query($line); $i = 0; while ($row = sybase_fetch_assoc($sql)) { foreach ($row as $key => $val) { $cols[$key] = $key; $rows[$i][$key] = $val; $lkey = strlen($key); $lval = strlen($val); if (!isset($maxl[$key])) $maxl[$key] = 0; if ($lkey > $maxl[$key]) $maxl[$key] = $lkey; if ($lval > $maxl[$key]) $maxl[$key] = $lval; } $i++; } foreach ($cols as $key => $val) $ret .= str_pad($val, $maxl[$key], ' ') . '|'; $ret .= "\n"; foreach ($rows as $row) { foreach ($row as $key => $val) $ret .= str_pad($val, $maxl[$key], ' ') . '|'; $ret .= "\n"; } $ret .= "\n"; } return $ret; }
}
$link = sybase_connect($argv[1], $argv[2], $argv[3]) or die("no connect !\n");
$kmdsybase = new kmdsybase($argv[1], 'history.txt', 'console.txt'); $kmdsybase->run();
sybase_close($link);
?>
|