$this->out($available,['action','description']);
$return = true;
- } elseif ($action == 'db.stdin') {
+ } elseif ($action == 'db.exec') {
$count = 0;
- while ($line = fgets(STDIN)) {
- $line = preg_replace('/^\s*(.*?)\s*;?\s*$/','$1',$line);
- if (!$line or strpos($line,'--') === 0) continue;
+ $sql = '';
+
+ while (($line = fgets(STDIN)) !== false) {
+ if (feof(STDIN)) break;
+
+ if (strpos($line,'--') === 0) continue;
+
+ $line = preg_replace('/[\r\n]+$/','',$line);
+ $sql .= $line;
+
+ if (!preg_match('/;$/',$sql)) continue;
+ #$line = preg_replace('/^\s*(.*?)\s*;?\s*$/','$1',$line);
+ #if (!$line or strpos($line,'--') === 0) continue;
+
$count++;
#echo "$count> $line\n";
- $this->conn->exec($line);
+ $this->conn->exec($sql);
+ $sql = '';
}
$return = $this->out([
'count' => $count,
'sql',
] as $k) {
if (!self::p($k) or !empty($this->status[$k])) continue;
+
+ # No count for view
+ if ($k == 'count' and $this->type != 'table') continue;
+
$this->status[$k] = $this->$k();
if (is_array($this->status[$k])) $this->status[$k] = count($this->status[$k]);
}