7 Commits

Author SHA1 Message Date
bcae723140 Add constraint operation to selectValue 2024-09-07 22:00:26 +02:00
0f07724585 Add NOT IN operator 2024-06-01 17:24:22 +02:00
a6c11c1015 Add quotes on upsert fields 2024-05-25 12:45:54 +02:00
81a9c919dd Remove die on upsert 2024-05-25 12:23:48 +02:00
3b5808523d Add upsert function 2024-05-25 12:20:03 +02:00
ee8c32ee27 Return native php number objects from mysqli 2024-02-04 22:55:53 +01:00
a9f8601384 New webpack folder structure 2023-11-19 18:11:51 +01:00
3 changed files with 35 additions and 9 deletions

View File

@@ -80,6 +80,9 @@ class Db extends PhpObject
//Timezone
$this->setQuery("SET time_zone='".date_default_timezone_get()."'");
//Returned Types
$this->oConnection->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
}
public function __destruct()
@@ -480,6 +483,28 @@ class Db extends PhpObject
return $iTableId;
}
/**
* Unlike insertUpdateRow, this function depends on the table defined UNIQUE KEY
* and not on the custom-defined $asKeys table
*/
public function upsertRow($sTableName, $asData, $asUpdateFields)
{
$this->cleanSql($sTableName);
$this->cleanSql($asData);
$this->cleanSql($asUpdateFields);
$asQuotedData = $this->addQuotes($asData);
$asUpdateData = array_intersect_key($asData, array_flip($asUpdateFields));
$asQuotesdUpdateData = $this->addQuotes($asUpdateData);
$sQuery =
"INSERT INTO ".$sTableName." (`".implode("`, `", array_keys($asQuotedData))."`) ".
"VALUES (".implode(", ", $asQuotedData).") ".
"ON DUPLICATE KEY UPDATE ".$this->implodeAll($asQuotesdUpdateData, " = ", ", ");
return $this->setQuery($sQuery)?$this->getLastId():0;
}
public function selectInsert($sTableName, $asData, $asKeys=array())
{
return $this->insertUpdateRow($sTableName, $asData, $asKeys, false);
@@ -561,7 +586,8 @@ class Db extends PhpObject
{
if(is_array($asConstraints))
{
if(array_key_exists('constOpe', $asInfo) && array_key_exists($sField, $asInfo['constOpe']) && $asInfo['constOpe'][$sField]=='BETWEEN') {
$sConstOpe = $asInfo['constOpe'][$sField] ?? '';
if($sConstOpe == 'BETWEEN') {
//Between
$asSelection[$sField] = $asConstraints['from'].' AND '.$asConstraints['to'];
$asInfo['constOpe'][$sField] = " BETWEEN ";
@@ -569,7 +595,7 @@ class Db extends PhpObject
else {
//Multiple values (IN)
$asSelection[$sField] = "(".implode(', ', $asConstraints).")";
$asInfo['constOpe'][$sField] = " IN ";
$asInfo['constOpe'][$sField] = ($sConstOpe=='NOT IN')?" NOT IN ":" IN ";
}
}
elseif(!array_key_exists('constOpe', $asInfo) || !array_key_exists($sField, $asInfo['constOpe'])) $asInfo['constOpe'][$sField] = " = ";
@@ -629,12 +655,12 @@ class Db extends PhpObject
}
}
public function selectRow($sTableName, $asConstraints=array(), $sColumnName='*')
public function selectRow($sTableName, $asConstraints=array(), $sColumnName='*', $asConstOpe=[])
{
//Table ID directly
if(!is_array($asConstraints)) $asConstraints = array($this->getId($sTableName)=>$asConstraints);
$asRows = $this->selectRows(array('select'=>$sColumnName, 'from'=>$sTableName, 'constraint'=>$asConstraints));
$asRows = $this->selectRows(array('select'=>$sColumnName, 'from'=>$sTableName, 'constraint'=>$asConstraints, 'constOpe'=>$asConstOpe));
$iCountNb = count($asRows);
switch($iCountNb)
{
@@ -665,13 +691,13 @@ class Db extends PhpObject
);
}
public function selectValue($sTableName, $sColumnName, $oConstraints=array())
public function selectValue($sTableName, $sColumnName, $oConstraints=array(), $asConstOpe=[])
{
if(!is_array($oConstraints))
{
$oConstraints = array($this->getId($sTableName)=>$oConstraints);
}
$oResult = $this->selectRow($sTableName, $oConstraints, $sColumnName);
$oResult = $this->selectRow($sTableName, $oConstraints, $sColumnName, $asConstOpe);
return empty($oResult)?false:$oResult;
}

View File

@@ -21,7 +21,7 @@ class Mask extends PhpObject
private $oLang;
private $sTimezone;
const MASK_FOLDER = 'masks/';
const MASK_FOLDER = '../src/masks/';
const MASK_EXT = '.html';
const START_TAG = 'START';
const END_TAG = 'END';

View File

@@ -15,7 +15,7 @@ class Translator extends PhpObject
private $asLanguages;
private $asTranslations; // [lang][key_word] = translation
const LANG_FOLDER = 'languages/';
const LANG_FOLDER = '../languages/';
const LANG_EXT = '.lang';
const LANG_SEP = '=';
const DEFAULT_LANG = 'en';
@@ -72,7 +72,7 @@ class Translator extends PhpObject
}
public function getTranslations($sLang='') {
return $this->getTranslation('', $sLang);
return $this->getTranslation('', array(), $sLang);
}
public function getHashToPage($asMenuPages)