283 lines
7.0 KiB
PHP
283 lines
7.0 KiB
PHP
<?php
|
|
|
|
class connector
|
|
{
|
|
public $action;
|
|
|
|
public $server;
|
|
public $user;
|
|
public $password;
|
|
|
|
private $database;
|
|
|
|
private $link;
|
|
private $is_connected;
|
|
|
|
function connector($user, $password, $server)
|
|
{
|
|
$this->user = $user;
|
|
$this->password = $password;
|
|
$this->server = $server;
|
|
$this->is_connected = false;
|
|
}
|
|
|
|
function connect()
|
|
{
|
|
if (!$this->is_connected) {
|
|
$this->link = @mysql_connect($this->server, $this->user, $this->password);
|
|
if (!$this->link) {
|
|
return 'CANNOT connect: ' . mysql_error();
|
|
} else {
|
|
$this->is_connected = true;
|
|
mysql_set_charset("utf8");
|
|
return 'OK';
|
|
}
|
|
}
|
|
}
|
|
|
|
function selectDb($database)
|
|
{
|
|
$this->database = $database;
|
|
|
|
mysql_select_db($this->database);
|
|
}
|
|
|
|
function dbList()
|
|
{
|
|
$db_list = mysql_list_dbs($this->link);
|
|
|
|
for ($i = 0; $row = mysql_fetch_object($db_list); $i++)
|
|
$list[$i] = $row->Database;
|
|
|
|
return $list;
|
|
}
|
|
|
|
function tableList($database)
|
|
{
|
|
$result = mysql_list_tables($database);
|
|
$num_rows = mysql_num_rows($result);
|
|
|
|
for ($i = 0; $i < $num_rows; $i++)
|
|
$list[$i] = mysql_tablename($result, $i);
|
|
|
|
return $list;
|
|
}
|
|
|
|
function query($query)
|
|
{
|
|
$result_id = mysql_query($query);
|
|
|
|
if (!$result_id) {
|
|
echo mysql_error() . "\n";
|
|
} else if ($info = mysql_info()) {
|
|
echo $info;
|
|
} else {
|
|
echo OK . "\n";
|
|
|
|
|
|
$numOfCols = mysql_num_fields($result_id);
|
|
if ($numOfCols > 0) {
|
|
for ($i = 0; $i < $numOfCols; $i++)
|
|
$field[$i] = mysql_field_name($result_id, $i);
|
|
|
|
|
|
echo json_encode($field) . "\n";
|
|
for ($i = 0; $row = mysql_fetch_row($result_id); $i++)
|
|
$result[$i] = $row;
|
|
echo json_encode($result);
|
|
}
|
|
}
|
|
}
|
|
|
|
function disconnect()
|
|
{
|
|
if ($this->link)
|
|
mysql_close($this->link);
|
|
}
|
|
|
|
function selectTable($table, $start, $limit)
|
|
{
|
|
$query = "SELECT * FROM `$table` LIMIT $start, $limit";
|
|
$result_id = mysql_query($query);
|
|
|
|
for ($i = 0; $row = mysql_fetch_row($result_id); $i++)
|
|
$result[$i] = $row;
|
|
|
|
return $result;
|
|
}
|
|
|
|
function fieldList($table)
|
|
{
|
|
$result_id = mysql_list_fields($this->database, $table);
|
|
|
|
$numOfCols = mysql_num_fields($result_id);
|
|
for ($i = 0; $i < $numOfCols; $i++)
|
|
$result[$i] = mysql_field_name($result_id, $i);
|
|
|
|
return $result;
|
|
}
|
|
|
|
function numRows($table)
|
|
{
|
|
$result_id = mysql_query("SELECT COUNT(*) as total_count FROM `$table`");
|
|
|
|
$ret = mysql_fetch_object($result_id);
|
|
return $ret->total_count;
|
|
}
|
|
|
|
function updateElement($table, $headerJSON, $oldValuesJSON, $newValuesJSON)
|
|
{
|
|
$header = json_decode($headerJSON);
|
|
$oldValues = json_decode($oldValuesJSON);
|
|
$newValues = json_decode($newValuesJSON);
|
|
$query = "UPDATE `$table` SET ";
|
|
|
|
for ($i = 0; $i < sizeof($header); $i++) {
|
|
$query .= "`" . $header[$i] . "` = '" . $newValues[$i] . "' ";
|
|
if ($i + 1 < sizeof($header))
|
|
$query .= ", ";
|
|
}
|
|
$query .= " WHERE ( ";
|
|
for ($i = 0; $i < sizeof($header); $i++) {
|
|
$query .= "`" . $header[$i] . "` = '" . $oldValues[$i] . "' ";
|
|
if ($i + 1 < sizeof($header))
|
|
$query .= " && ";
|
|
}
|
|
$query .= ");";
|
|
|
|
$result_id = mysql_query($query);
|
|
|
|
if (!$result_id) {
|
|
echo mysql_error();
|
|
}
|
|
|
|
$info = mysql_info();
|
|
echo $info;
|
|
}
|
|
|
|
function addElement($table, $headerJSON, $valuesJSON)
|
|
{
|
|
$header = json_decode($headerJSON);
|
|
$values = json_decode($valuesJSON);
|
|
$query = "INSERT INTO `$table` (";
|
|
|
|
for ($i = 0; $i < sizeof($header); $i++) {
|
|
$query .= "`" . $header[$i] . "`";
|
|
if ($i + 1 < sizeof($header))
|
|
$query .= ", ";
|
|
}
|
|
$query .= ") VALUES ( ";
|
|
for ($i = 0; $i < sizeof($header); $i++) {
|
|
$query .= "'" . $values[$i] . "' ";
|
|
if ($i + 1 < sizeof($header))
|
|
$query .= " , ";
|
|
}
|
|
$query .= ");";
|
|
|
|
$result_id = mysql_query($query);
|
|
|
|
if (!$result_id) {
|
|
echo mysql_error();
|
|
} else {
|
|
echo 'OK';
|
|
}
|
|
|
|
$info = mysql_info();
|
|
echo $info;
|
|
}
|
|
|
|
function removeElement($table, $headerJSON, $valuesJSON)
|
|
{
|
|
$header = json_decode($headerJSON);
|
|
$values = json_decode($valuesJSON);
|
|
$query = "DELETE FROM `$table` WHERE (";
|
|
|
|
for ($i = 0; $i < sizeof($header); $i++) {
|
|
$query .= "`" . $header[$i] . "` = '" . $values[$i] . "' ";
|
|
if ($i + 1 != sizeof($header))
|
|
$query .= " AND ";
|
|
}
|
|
$query .= ");";
|
|
|
|
$result_id = mysql_query($query);
|
|
|
|
if (!$result_id) {
|
|
echo mysql_error();
|
|
} else {
|
|
echo 'OK';
|
|
}
|
|
}
|
|
}
|
|
|
|
$testEnabled = true;
|
|
|
|
$action = $_POST['a'];
|
|
|
|
$server = 'localhost';
|
|
$user = $_POST['u'];
|
|
$password = $_POST['p'];
|
|
|
|
$database = $_POST['d'];
|
|
$table = $_POST['t'];
|
|
$start = $_POST['s'];
|
|
$limit = $_POST['l'];
|
|
$query = $_POST['q'];
|
|
$header = $_POST['h'];
|
|
$values = $_POST['v'];
|
|
$oldValues = $_POST['o'];
|
|
|
|
if (($user == null) || ($password == null) || ($action == null))
|
|
die('Nope');
|
|
|
|
if($testEnabled){
|
|
if($_GET['test']==true)
|
|
$_POST = $_GET;
|
|
}
|
|
|
|
$con = new connector($user, $password, $server);
|
|
|
|
if($action=="login"){
|
|
echo $con->connect();
|
|
} else {
|
|
$con->connect();
|
|
switch ($action) {
|
|
case "dblist":
|
|
$list = $con->dbList();
|
|
echo json_encode($list);
|
|
break;
|
|
case "tablelist":
|
|
echo json_encode($con->tableList($database));
|
|
break;
|
|
case "fieldlist":
|
|
$con->selectDb($database);
|
|
echo json_encode($con->fieldList($table));
|
|
break;
|
|
case "numrows":
|
|
$con->selectDb($database);
|
|
echo $con->numRows($table);
|
|
break;
|
|
case "query":
|
|
if (isset($database))
|
|
$con->selectDb($database);
|
|
$con->query($query);
|
|
break;
|
|
case "getrows":
|
|
$con->selectDb($database);
|
|
echo json_encode($con->selectTable($table, $start, $limit));
|
|
break;
|
|
case "updateelement":
|
|
$con->selectDb($database);
|
|
$con->updateElement($table, $header, $oldValues, $values);
|
|
break;
|
|
case "addelement":
|
|
$con->selectDb($database);
|
|
$con->addElement($table, $header, $values);
|
|
break;
|
|
case "removeelement":
|
|
$con->selectDb($database);
|
|
$con->removeElement($table, $header, $values);
|
|
}
|
|
}
|
|
$con->disconnect();
|
|
?>
|