Skip to content

Commit d3392a0

Browse files
committed
add method disableBacktick for driver pgsql & sqlsrv
1 parent 46300f0 commit d3392a0

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed

src/Batch.php

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ public function update(Model $table, array $values, string $index = null, bool $
103103
$value = (is_null($val[$field]) ? 'NULL' : $finalField);
104104
}
105105

106-
if ($driver == 'pgsql')
106+
if (Common::disableBacktick($driver))
107107
$final[$field][] = 'WHEN ' . $index . ' = \'' . $val[$index] . '\' THEN ' . $value . ' ';
108108
else
109109
$final[$field][] = 'WHEN `' . $index . '` = \'' . $val[$index] . '\' THEN ' . $value . ' ';
110110
}
111111
}
112112
}
113113

114-
if ($driver == 'pgsql') {
114+
if (Common::disableBacktick($driver)) {
115115

116116
$cases = '';
117117
foreach ($final as $k => $v) {
@@ -189,18 +189,17 @@ public function updateWithTwoIndex(Model $table, array $values, string $index =
189189
$finalField = $raw ? Common::mysql_escape($val[$field]) : "'" . Common::mysql_escape($val[$field]) . "'";
190190
$value = (is_null($val[$field]) ? 'NULL' : $finalField);
191191

192-
if ($driver == 'pgsql') {
192+
if (Common::disableBacktick($driver)) {
193193
$final[$field][] = 'WHEN (' . $index . ' = \'' . Common::mysql_escape($val[$index]) . '\' AND ' . $index2 . ' = \'' . $val[$index2] . '\') THEN ' . $value . ' ';
194-
}
195-
else {
194+
} else {
196195
$final[$field][] = 'WHEN (`' . $index . '` = "' . Common::mysql_escape($val[$index]) . '" AND `' . $index2 . '` = "' . $val[$index2] . '") THEN ' . $value . ' ';
197196
}
198197
}
199198
}
200199
}
201200

202201

203-
if ($driver == 'pgsql') {
202+
if (Common::disableBacktick($driver)) {
204203
$cases = '';
205204
foreach ($final as $k => $v) {
206205
$cases .= '"' . $k . '" = (CASE ' . implode("\n", $v) . "\n"
@@ -209,8 +208,7 @@ public function updateWithTwoIndex(Model $table, array $values, string $index =
209208

210209
$query = "UPDATE \"" . $this->getFullTableName($table) . '" SET ' . substr($cases, 0, -2) . " WHERE \"$index\" IN('" . implode("','", $ids) . "') AND \"$index2\" IN('" . implode("','", $ids2) . "');";
211210
//$query = "UPDATE \"" . $this->getFullTableName($table) . "\" SET " . substr($cases, 0, -2) . " WHERE \"$index\" IN(" . '"' . implode('","', $ids) . '")' . " AND \"$index2\" IN(" . '"' . implode('","', $ids2) . '"' . " );";
212-
}
213-
else {
211+
} else {
214212
$cases = '';
215213
foreach ($final as $k => $v) {
216214
$cases .= '`' . $k . '` = (CASE ' . implode("\n", $v) . "\n"

src/Common/Common.php

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ public static function mysql_escape($fieldValue)
1717
}
1818

1919
if (is_bool($fieldValue)) {
20-
return (int) $fieldValue;
20+
return (int)$fieldValue;
2121
}
2222

23-
if(self::is_json($fieldValue)){
23+
if (self::is_json($fieldValue)) {
2424
return self::safeJson($fieldValue);
2525
}
2626

@@ -35,7 +35,13 @@ public static function mysql_escape($fieldValue)
3535
return $fieldValue;
3636
}
3737

38-
protected static function safeJsonString($fieldValue){
38+
public static function disableBacktick($drive)
39+
{
40+
return in_array($drive, ['pgsql', 'sqlsrv']);
41+
}
42+
43+
protected static function safeJsonString($fieldValue)
44+
{
3945
return str_replace(
4046
["'"],
4147
["''"],
@@ -45,26 +51,27 @@ protected static function safeJsonString($fieldValue){
4551

4652
protected static function is_json($str): bool
4753
{
48-
if (!is_string($str)){
54+
if (!is_string($str)) {
4955
return false;
5056
}
5157
return json_decode($str, true) !== null;
5258
}
5359

54-
protected static function safeJson($jsonData,$asArray = false){
55-
$jsonData = json_decode($jsonData,true);
60+
protected static function safeJson($jsonData, $asArray = false)
61+
{
62+
$jsonData = json_decode($jsonData, true);
5663
$safeJsonData = [];
57-
if (!is_array($jsonData)){
64+
if (!is_array($jsonData)) {
5865
return $jsonData;
5966
}
60-
foreach ($jsonData as $key => $value){
61-
if (self::is_json($value)){
62-
$safeJsonData[$key] = self::safeJson($value,true);
63-
}elseif(is_string($value)){
67+
foreach ($jsonData as $key => $value) {
68+
if (self::is_json($value)) {
69+
$safeJsonData[$key] = self::safeJson($value, true);
70+
} elseif (is_string($value)) {
6471
$safeJsonData[$key] = self::safeJsonString($value);
65-
}elseif(is_array($value)){
66-
$safeJsonData[$key] = self::safeJson(json_encode($value),true);
67-
}else{
72+
} elseif (is_array($value)) {
73+
$safeJsonData[$key] = self::safeJson(json_encode($value), true);
74+
} else {
6875
$safeJsonData[$key] = $value;
6976
}
7077
}

0 commit comments

Comments
 (0)