114 lines
3.4 KiB
PHP
Executable File
114 lines
3.4 KiB
PHP
Executable File
<?php
|
|
define('DB_HOST','mysql1.mediaproject.de');
|
|
define('DB_USER','c30_sds_api');
|
|
define('DB_PASS','sBF77apxdcpfwJcAk28o');
|
|
define('DB_DATABASE','c30_sds_api');
|
|
|
|
$DB=new PDO('mysql:host='.DB_HOST.';dbname='.DB_DATABASE.';chatset=utf-8',DB_USER,DB_PASS);
|
|
$DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
|
|
$DB->query('SET NAMES \'utf8\'');
|
|
|
|
function db_select($table, $data, $where=[], $order=[], $join=[], $debug=false)
|
|
{
|
|
global $DB;
|
|
$STH = "";
|
|
|
|
if(gettype($data)=='string') $data = array($data);
|
|
$data = '`'.implode('`,`', $data).'`';
|
|
$data = str_replace('`*`','*', $data);
|
|
|
|
if(!empty($where) && is_array($where))
|
|
{
|
|
$cond = [];
|
|
foreach($where as $key=>$value) { $cond[] = "`$key`='$value'"; }
|
|
$where = implode(' AND ', $cond);
|
|
$where = str_replace('=\'!', '!=\'',$where);
|
|
$where = str_replace('AND `|', 'OR `', $where);
|
|
$where = preg_replace('#=\s*[\'\"]([<>=]+)(.*?)[\'\"]#', '$1 \'$2\'', $where);
|
|
}
|
|
|
|
if(!empty($order) && is_array($order))
|
|
{
|
|
// format: ['field1'=>'direction','field2'=>'direction'...] OR ['field1', 'field2'...]
|
|
$cond = [];
|
|
foreach($order as $field=>$direction) {
|
|
if(is_numeric($field)) {
|
|
$field = $direction;
|
|
$direction='ASC';
|
|
}
|
|
$cond[] = $field.' '.$direction;
|
|
}
|
|
$order = implode(',',$cond);
|
|
}
|
|
|
|
if(!empty($join) && is_array($join))
|
|
{
|
|
// format: ['table1'=>['field-of-source','field-of-table1'], 'table2'=>['field-of-source','field-of-table2']]
|
|
$cond = [];
|
|
foreach($join as $key=>$value)
|
|
{
|
|
if(is_array($value) && count($value)==2)
|
|
{
|
|
$cond[] = str_replace('~', $key, ' JOIN '.$key.' ON '.$table.'.'.implode(' = ~.',$value));
|
|
}
|
|
}
|
|
$join = implode('',$cond);
|
|
}
|
|
|
|
$data = preg_replace('#`([^`]+?)\.([^`]+?)`#', '$1.`$2`', $data);
|
|
$data = preg_replace('#`(.+?) as (.*?)`#i','`$1` AS `$2`', $data);
|
|
$data = preg_replace('#`([a-z0-9]+\(.*?\))`#i', '$1', $data);
|
|
$where = preg_replace('#`([^`]+?)\.([^`]+?)`#', '$1.`$2`', $where);
|
|
$order = preg_replace('#`([^`]+?)\.([^`]+?)`#', '$1.`$2`', $order);
|
|
$join = preg_replace('#`([^`]+?)\.([^`]+?)`#', '$1.`$2`', $join);
|
|
|
|
if(empty($where)) $where = '';
|
|
if(empty($order)) $order = '';
|
|
if(empty($join)) $join = '';
|
|
|
|
$sql = 'SELECT '.$data.' FROM '.$table.$join.(!empty($where) ? ' WHERE '.$where : '').(!empty($order) ? ' ORDER BY '.$order : '');
|
|
//exit($sql);
|
|
|
|
try{
|
|
$STH = $DB->prepare($sql);
|
|
$STH->execute();
|
|
$retVal = $STH->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if($debug===true)
|
|
{
|
|
$dump = print_r($STH, true).": ".print_r($retVal, true);
|
|
print($dump.'<br>');
|
|
file_put_contents("query_debug.txt", $dump."\r\n", FILE_APPEND);
|
|
}
|
|
|
|
return $retVal;
|
|
}
|
|
catch(PDOException $err)
|
|
{
|
|
print_r($STH); print('<br/>');
|
|
print_r($err);
|
|
die();
|
|
}
|
|
}
|
|
|
|
function getOptions($data, $debug=false)
|
|
{
|
|
global $DB;
|
|
$STH = "";
|
|
$sql = 'SELECT * FROM options WHERE name IN (\''.implode('\',\'',$data).'\');';
|
|
|
|
try {
|
|
$STH = $DB->prepare($sql);
|
|
$STH->execute($data);
|
|
if($debug===true)
|
|
{
|
|
$dump = print_r($STH);
|
|
print($dump); print('<br>');
|
|
file_put_contents("query_debug.txt", $dump."\r\n", FILE_APPEND);
|
|
}
|
|
return $STH->fetchAll(PDO::FETCH_ASSOC);
|
|
} catch(Exception $err) {
|
|
print_r($STH); print('<br/>');
|
|
print_r($err);
|
|
}
|
|
} |