code: protected function valueStringFromArray($dataMember, $opening, $sep, $quote = true)
      {
          if (empty($this->$dataMember)) {
              return 0;
          }
          $this->query .= $opening;
          $count = count($this->$dataMember);
          $result = '';
          $addParenthesis = false;
          for($i=0; $i<$count; $i++) {
              if (!is_array($this->{$dataMember}[$i])) {
                  $addParenthesis = true;
              }
              $result .= $this->getValuesList($dataMember, $i);
              if ($count-1 != $i) {
                  $result .= $sep;
              }
          }
          if ($addParenthesis) {
              $this->query .= '('.$result.')';
          }
          else {
              $this->query .= $result;
          }
      }
docs: Almost the same as queryStringFromArray() except that this adds parenthesis
  around the query piece and calls getArrayList() instead of getArrayItem().
  See queryStringFromArray() description.
  This is used for getting the INSERT VALUES in an insert statement.
  
  E.g. VALUES ('bob', 'bob@gmail.com', 'admin'), ('john', 'john@gmail.com', 'user')
  From an array with the following format:
  [
  ['bob', 'bob@gmail.com', 'admin'],
  ['john', 'john@gmail.com', 'user']
  ]
  For each sub-array it creates an insert expression.