Пример #1
0
 /**
  * Mysqli's binding and returning of statement values
  * Mysqli requires you to bind variables to the extension in order to
  * get data out.  These values have to be references:
  *
  * @see http://php.net/manual/en/mysqli-stmt.bind-result.php
  * @throws Exception\RuntimeException
  * @return bool
  */
 protected function loadDataFromMysqliStatement()
 {
     $data = null;
     // build the default reference based bind structure, if it does not already exist
     if ($this->statementBindValues['keys'] === null) {
         $this->statementBindValues['keys'] = array();
         /* @var $resultResource \mysqli_result */
         $resultResource = $this->resource->result_metadata();
         foreach ($resultResource->fetch_fields() as $col) {
             $this->statementBindValues['keys'][] = $col->name;
         }
         $this->statementBindValues['values'] = array_fill(0, count($this->statementBindValues['keys']), null);
         $refs = array();
         foreach ($this->statementBindValues['values'] as $i => &$f) {
             $refs[$i] =& $f;
         }
         call_user_func_array(array($this->resource, 'bind_result'), $this->statementBindValues['values']);
     }
     if (($r = $this->resource->fetch()) === null) {
         if (!$this->isBuffered) {
             $this->resource->close();
         }
         return false;
     } elseif ($r === false) {
         throw new Exception\RuntimeException($this->resource->error);
     }
     // dereference
     for ($i = 0, $count = count($this->statementBindValues['keys']); $i < $count; $i++) {
         $this->currentData[$this->statementBindValues['keys'][$i]] = $this->statementBindValues['values'][$i];
     }
     $this->currentComplete = true;
     $this->nextComplete = true;
     $this->position++;
     return true;
 }
Пример #2
0
 /**
  * Go to next row
  * @param mysqli_result|resource|PDOStatement $result
  * @return array
  */
 public function nextRow($result)
 {
     return $result->fetch(PDO::FETCH_ASSOC);
 }
Пример #3
0
 /**
  * Build a radio button group from a set of $data with a specified $name, set the selected
  * radio button in the group if there is a match found between $selectedValue and button_value.
  *
  * If passing a \mysqli_result it must contain fields named as:
  *  - button_value 
  *  - button_text
  *
  *
  * @param Array|\mysqli_result $data The data to be used to build the radio button group. 
  * @param string $name The name of the radio button group.
  * @param mixed $selectedValue The option_value to set as checked.
  *
  * @return string
  */
 public function radioButtons($data, $name, $selectedValue = null)
 {
     $buttons = '';
     if ($data instanceof \PDOStatement) {
         while ($row = $data->fetch()) {
             $opts = array('name' => $name, 'value' => $row['button_value'], 'type' => 'radio');
             if ($row['button_value'] == $selectedValue) {
                 $opts['checked'] = 'checked';
             }
             //if
             $button = $this->app['Html']->input($opts);
             $buttons .= $this->app['Html']->label($row['button_text'] . $button);
         }
         //while
     } else {
         if (is_array($data)) {
             foreach ($data as $k => $v) {
                 $opts = array('name' => $name, 'value' => $k, 'type' => 'radio');
                 if ($k == $selectedValue) {
                     $opts['checked'] = 'checked';
                 }
                 //if
                 $button = $this->app['Html']->input($opts);
                 $buttons .= $this->app['Html']->label($v . $button);
             }
             //foreach
         } else {
         }
     }
     //el
     return $buttons;
 }