<?php
//
// USAGE:
//
// $ php command.php
// -h hostname
// -u username
// -p password
// -d database
// [--include-tables table1 ... tablen]
// [--exclude-tables table1 ... tablen]
// --search "search string"
//
include('class.SearchMySQL.php');
define('PREVIEW_PAD',25);
define('PARAM_EXCLUDE',0);
define('PARAM_INCLUDE',1);
define('PARAM_SEARCH',2);
$host = 'localhost';
$user = 'root';
$password = '';
$database = '';
$params = array(
PARAM_EXCLUDE => array(),
PARAM_INCLUDE => array(),
PARAM_SEARCH => array()
);
if($argv[0] == substr(__FILE__,( strlen($argv[0]) * -1))) {
array_shift($argv);
}
$current_action = null;
for($i = 0, $j = count($argv); $i < $j; $i++) {
switch($argv[$i]) {
case '-h': // host
$i++;
$host = $argv[$i];
$current_action = null;
break;
case '-u': // user
$i++;
$user = $argv[$i];
$current_action = null;
break;
case '-p': // password
$i++;
$password = $argv[$i];
$current_action = null;
break;
case '-d': // database
$i++;
$database = $argv[$i];
$current_action = null;
break;
case '--exclude-tables':
$current_action = PARAM_EXCLUDE;
break;
case '--include-tables':
$current_action = PARAM_INCLUDE;
break;
case '--search':
$current_action = PARAM_SEARCH;
break;
default:
if(!($current_action === null)) {
$params[$current_action][] = $argv[$i];
} else {
echo 'Invalid parameter: '.$argv[$i]."\n";
exit;
}
break;
}
}
if(!count($params[PARAM_SEARCH])) {
echo 'No search string given.';
exit;
}
$search_string = implode(' ',$params[PARAM_SEARCH]);
$searcher = new SearchMySQL();
foreach($params[PARAM_EXCLUDE] as $exclude_table) {
$searcher->excludeTable($exclude_table);
}
foreach($params[PARAM_INCLUDE] as $include_table) {
$searcher->includeTable($include_table);
}
$searcher->setConnectionDetails($host, $user, $password, $database);
$results = $searcher->search($search_string);
foreach($results as $result) {
echo 'Value: ';
$pos = strpos($result['value'],$search_string);
$start_index = 0;
if(strlen($result['value'])>(strlen($search_string) + (PREVIEW_PAD*2) )) {
if($pos >=PREVIEW_PAD) {
$start_index = $pos - PREVIEW_PAD;
echo '... ';
}
echo substr($result['value'],$start_index,strlen($search_string)+PREVIEW_PAD);
if( ( $pos + strlen($search_string) + PREVIEW_PAD ) < ( strlen($result['value']) - 1 - $start_index ) ) {
echo ' ...';
}
} else {
// No padding required
echo $result['value'];
}
echo "\n";
echo 'Table: '.$result['table']."\n";
echo 'Field: '.$result['field']."\n";
echo 'PK Query: '.$result['sql']."\n\n";
}
echo count($results).' result'.(count($results)==1 ? '' : 's').'.'."\n";
|