]> git.nbdom.net Git - nb.git/commitdiff
lib/php/db/table.php
authorroot <sys@15gifts.com>
Mon, 7 Aug 2017 23:24:56 +0000 (00:24 +0100)
committerroot <sys@15gifts.com>
Mon, 7 Aug 2017 23:24:56 +0000 (00:24 +0100)
lib/php/db.php
lib/php/db/table.php

index 019560eaa3289e2235d93236bd1f668654d7323a..9fb9f06451625b388499091c9f8804f6214e7c67 100644 (file)
@@ -330,6 +330,7 @@ class Db extends nb {
 
   public function row($sql,$sep=' ') {
     $query = $this->query($sql);
+#bye($sql);
     $result = $query->fetch(PDO::FETCH_NUM);
     if (!is_array($result)) return $result;
     return join($sep,$result);
index a5cf2aad2ba993372014ff9766a230125d2deb9a..2f376b4f5d671f4aec8cf06ae78c353d11ccd78c 100644 (file)
@@ -1888,7 +1888,20 @@ Class Table extends nb {
     if (isset($this->count)) return $this->count;
 
     $sql_count = $this->name;
-    if (preg_match('/^[\w_-]+$/',$sql_count)) {
+
+    # We could use it instead of query, but wont be cached ! $this->create_temporary();
+    if ($this->type == 'sql' and $this->name !== DB_TABLE_QUERY_NAME) {
+      if (!$this->sql) return;
+
+      $sql_count = "SELECT COUNT(*) FROM ($this->sql) _table_count" ;
+# NB 08.08.17       if (preg_match('/SELECT.*SELECT|UNION/i',$this->sql)) {
+# NB 08.08.17         $sql_count = "SELECT COUNT(*) FROM ($this->sql) _table_count" ;
+# NB 08.08.17       } else {
+# NB 08.08.17         $sql_count = "SELECT COUNT(*) FROM ".preg_replace('/^SELECT .*?\s+FROM\s+/','',$this->sql);
+# NB 08.08.17         bye($sql_count);
+# NB 08.08.17       }
+
+    } elseif (preg_match('/^[\w_-]+$/',$sql_count)) {
       $sql_count = "SELECT count(*) FROM ".$this->sql_name($sql_count);
 
     } else {
@@ -2100,7 +2113,7 @@ Class Table extends nb {
         $sth = $this->db()->conn->query($sql,PDO::FETCH_ASSOC);
         if (!empty($sth)) $this->status = $sth->fetch();
 
-      }
+      } # if ($this->type == 'sql')
 
       if (empty($this->status)) $this->status = [];
 
@@ -2128,7 +2141,8 @@ Class Table extends nb {
       'fields',
       'sql',
     ] as $k) {
-      if (!empty($this->status[$k])) continue;
+      if (isset($this->status[$k])) continue;
+# NB 08.08.17       if (!empty($this->status[$k])) continue;
 
       if (empty($key)) {
         if (!self::p($k)) continue;