From afc3ec70b5b42d96616225cb1fc0a1b1c4303a86 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Wed, 6 Apr 2016 13:41:42 +0200 Subject: [PATCH] Fix bugs --- lib/php/db/table.php | 13 ++++++++++--- lib/php/db/types/sqlite.php | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/php/db/table.php b/lib/php/db/table.php index 2f0e2ba9..c8104592 100644 --- a/lib/php/db/table.php +++ b/lib/php/db/table.php @@ -460,7 +460,11 @@ Class Table extends nb { $v = str_replace('*','%',$v); $v = $this->db()->quote($v); - $equal = ' '.($not ? 'NOT ' : '').'LIKE '; + if (preg_match('/[_%]/',$v)) { + $equal = ' '.($not ? 'NOT ' : '').'LIKE '; + } else { + $equal = ($not ? '<> ' : '='); + } // Others } else { @@ -485,13 +489,15 @@ Class Table extends nb { # having, denorm, EMPTY $extra_where = (string)$this->db()->type('extra_where'); if ($extra_where == 'having' and $field->extra) { - $having[] = "$k$equal$v"; + $having[] = $this->extras[$k]->sql_name()."$equal$v"; } elseif ($extra_where == 'denorm' and $field->extra) { $where[] = $this->extras[$k]->sql_name()."$equal$v"; + } elseif ($field->extra) { + $where[] = $this->extras[$k]->sql_name()."$equal$v"; } else { - $where[] = "$k$equal$v"; + $where[] = $field->sql_name()."$equal$v"; } } #foreach fields @@ -695,6 +701,7 @@ Class Table extends nb { if ($out_conf) { out::end($out_conf); + } else { echo $this->{"rows_end_$format"}(); diff --git a/lib/php/db/types/sqlite.php b/lib/php/db/types/sqlite.php index bab403e5..e0d9c276 100644 --- a/lib/php/db/types/sqlite.php +++ b/lib/php/db/types/sqlite.php @@ -1,6 +1,7 @@ true, +'extra_where' => 'denorm', 'quote_name' => '`', -- 2.47.3