CDbDataReader
| Пакет | system.db |
|---|---|
| Наследование | класс CDbDataReader » CComponent |
| Реализует | Iterator, Traversable, Countable |
| С | 1.0 |
| Исходный код | framework/db/CDbDataReader.php |
Для чтения текущей строки данных, вызовите read. Метод readAll возвращает все строки в одном массиве.
Также можно получить строки данных в CDbDataReader, используя цикл foreach:
foreach($reader as $row)
// $row represents a row of data
Так как CDbDataReader является однонаправленным потоком, вы можете пройтись по нему только один раз. Можно использовать определённый режим извлечения данных, установив FetchMode. Более подробную информацию см. на http://www.php.net/manual/en/function.PDOStatement-setFetchMode.php.
Свойства общего доступа
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| columnCount | целое | Возвращает количество столбцов в наборе результатов. | CDbDataReader |
| isClosed | boolean | является ли читатель закрытым или нет. | CDbDataReader |
| rowCount | целое | Возвращает количество строк в наборе результатов. | CDbDataReader |
Методы общего доступа
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CDbDataReader |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| asa() | Возвращает объект поведения с указанным именем. | CComponent |
| attachBehavior() | Прикрепляет поведение к компоненту. | CComponent |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | CComponent |
| attachEventHandler() | Прикрепляет обработчик событий к событию. | CComponent |
| bindColumn() | Связывает столбец с PHP-переменной. | CDbDataReader |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| close() | Закрывает читатель. | CDbDataReader |
| count() | Возвращает количество строк в наборе результатов. | CDbDataReader |
| current() | Возвращает текущую строку. | CDbDataReader |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединённое поведение. | CComponent |
| disableBehaviors() | Отключает все присоединённые поведения данного компонента. | CComponent |
| enableBehavior() | Включает присоединённое поведение. | CComponent |
| enableBehaviors() | Включает все присоединённые поведения данного компонента. | CComponent |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте данного компонента. | CComponent |
| getColumnCount() | Возвращает количество столбцов в наборе результатов. | CDbDataReader |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| getIsClosed() | является ли читатель закрытым или нет. | CDbDataReader |
| getRowCount() | Возвращает количество строк в наборе результатов. | CDbDataReader |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединённые обработчики для указанного события. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| key() | Возвращает индекс текущей строки. | CDbDataReader |
| next() | Перемещает внутренний указатель к следующей строке. | CDbDataReader |
| nextResult() | Перемещает читатель к следующему результату при чтении результатов пакетных инструкций. | CDbDataReader |
| raiseEvent() | Вызывает событие. | CComponent |
| read() | Перемещает читатель к следующей строке в наборе результатов. | CDbDataReader |
| readAll() | Считывает весь набор результатов в массив. | CDbDataReader |
| readColumn() | Возвращает один столбец из следующей строки набора результатов. | CDbDataReader |
| readObject() | Возвращает объект, заполненный следующей строкой данных. | CDbDataReader |
| rewind() | Возвращает итератор в начальное состояние. | CDbDataReader |
| setFetchMode() | Устанавливает режим извлечения по умолчанию для данного объекта | CDbDataReader |
| valid() | Возвращает, есть ли строка данных в текущей позиции. | CDbDataReader |
Подробное описание свойств
columnCount свойство только для чтения
public integer getColumnCount()
Возвращает количество столбцов в наборе результатов. Обратите внимание, даже если в читателе нет строк, это всё равно даёт правильное количество столбцов.
isClosed свойство только для чтения
public boolean getIsClosed()
является ли читатель закрытым или нет.
rowCount свойство только для чтения
public integer getRowCount()
Возвращает количество строк в наборе результатов. Обратите внимание, что многие СУБД могут не предоставить осмысленного счётчика. В этом случае используйте «SELECT COUNT(*) FROM tableName», чтобы получить количество строк.
Подробное описание методов
__construct() метод
public void __construct(CDbCommand $command) | ||
| $command | CDbCommand | команда, генерирующая результат запроса |
public function __construct(CDbCommand $command)
{
$this->_statement=$command->getPdoStatement();
$this->_statement->setFetchMode(PDO::FETCH_ASSOC);
}
Конструктор.
bindColumn() метод
public void bindColumn(mixed $column, mixed &$value, integer $dataType=NULL) | ||
| $column | mixed | Номер столбца (индексируется с 1) или имя столбца в наборе результатов. При использовании имени столбца, обратите внимание, что имя должно соответствовать регистру имени, возвращённого драйвером. |
| $value | mixed | Имя PHP переменной, к которой будет привязан столбец. |
| $dataType | integer | Тип данных параметра |
public function bindColumn($column, &$value, $dataType=null)
{
if($dataType===null)
$this->_statement->bindColumn($column,$value);
else
$this->_statement->bindColumn($column,$value,$dataType);
}
Привязывает столбец к PHP переменной. При извлечении строк данных соответствующее значение столбца будет установлено в переменной. Обратите внимание, что режим извлечения должен включать PDO::FETCH_BOUND.
close() метод
public void close() |
public function close()
{
$this->_statement->closeCursor();
$this->_closed=true;
}
Закрывает reader. Это освобождает ресурсы, выделенные для выполнения данного SQL запроса. Попытки чтения после вызова этого метода могут иметь непредсказуемый результат.
count() метод
public integer count() | ||
| {return} | integer | количество строк в результате. |
public function count()
{
return $this->getRowCount();
}
Возвращает количество строк в наборе результатов. Этот метод необходим для интерфейса Countable. Обратите внимание, что большинство СУБД могут не предоставить осмысленное значение подсчёта. В этом случае используйте «SELECT COUNT(*) FROM tableName» для получения количества строк.
current() метод
public mixed current() | ||
| {return} | mixed | текущая строка. |
public function current()
{
return $this->_row;
}
Возвращает текущую строку. Этот метод требуется для интерфейса Iterator.
getColumnCount() метод
public integer getColumnCount() | ||
| {return} | integer | количество столбцов в наборе результатов. |
public function getColumnCount()
{
return $this->_statement->columnCount();
}
Возвращает количество столбцов в наборе результатов. Обратите внимание, что даже если в reader нет строк, это всё равно даёт правильное количество столбцов.
getIsClosed() метод
public boolean getIsClosed() | ||
| {return} | boolean | закрыт ли reader или нет. |
public function getIsClosed()
{
return $this->_closed;
}
закрыт ли reader или нет.
getRowCount() метод
public integer getRowCount() | ||
| {return} | integer | количество строк в результате. |
public function getRowCount()
{
return $this->_statement->rowCount();
}
Возвращает количество строк в наборе результатов. Обратите внимание, что большинство СУБД могут не предоставить осмысленное значение подсчёта. В этом случае используйте «SELECT COUNT(*) FROM tableName» для получения количества строк.
key() метод
public integer key() | ||
| {return} | integer | индекс текущей строки. |
public function key()
{
return $this->_index;
}
Возвращает индекс текущей строки. Этот метод требуется для интерфейса Iterator.
next() метод
public void next() |
public function next()
{
$this->_row=$this->_statement->fetch();
$this->_index++;
}
Перемещает внутренний указатель к следующей строке. Этот метод требуется для интерфейса Iterator.
nextResult() метод
public boolean nextResult() | ||
| {return} | boolean | Возвращает true при успехе или false при неудаче. |
public function nextResult()
{
if(($result=$this->_statement->nextRowset())!==false)
$this->_index=-1;
return $result;
}
Перемещает reader к следующему результату при чтении результатов набора заявок. Этот метод полезен только в том случае, если запрос возвращает несколько наборов результатов. Не все СУБД поддерживают эту функцию.
read() метод
public array|false read() | ||
| {return} | array|false | текущая строка, false, если больше строк нет. |
public function read()
{
return $this->_statement->fetch();
}
Перемещает reader к следующей строке в наборе результатов.
readAll() метод
public array readAll() | ||
| {return} | array | набор результатов (каждый элемент массива представляет строку данных). Пустой массив возвращается, если результат не содержит строк. |
public function readAll()
{
return $this->_statement->fetchAll();
}
Считывает весь набор результатов в массив.
readColumn() метод
public mixed|false readColumn(integer $columnIndex) | ||
| $columnIndex | integer | индекс столбца (нумерация с 0) |
| {return} | mixed|false | столбец текущей строки, false, если больше строк нет. |
public function readColumn($columnIndex)
{
return $this->_statement->fetchColumn($columnIndex);
}
Возвращает один столбец из следующей строки набора результатов.
readObject() метод
public mixed|false readObject(string $className, array $fields) | ||
| $className | string | имя класса объекта, который будет создан и заполнен |
| $fields | array | Элементы этого массива передаются в конструктор |
| {return} | mixed|false | заполненный объект, false, если больше строк нет. |
public function readObject($className,$fields)
{
return $this->_statement->fetchObject($className,$fields);
}
Возвращает объект, заполненный следующей строкой данных.
rewind() метод
public void rewind() |
public function rewind()
{
if($this->_index<0)
{
$this->_row=$this->_statement->fetch();
$this->_index=0;
}
else
throw new CDbException(Yii::t('yii','CDbDataReader cannot rewind. It is a forward-only reader.'));
}
Сбрасывает итератор в начальное состояние. Этот метод необходим для интерфейса Iterator.
setFetchMode() метод
public void setFetchMode(mixed $mode) | ||
| $mode | смешанный | режим извлечения |
public function setFetchMode($mode)
{
$params=func_get_args();
call_user_func_array(array($this->_statement,'setFetchMode'),$params);
}
Устанавливает режим извлечения по умолчанию для данного оператора.
valid() метод
public boolean valid() | ||
| {return} | boolean | есть ли строка данных в текущей позиции. |
public function valid()
{
return $this->_row!==false;
}
Возвращает, есть ли строка данных в текущей позиции. Этот метод необходим для интерфейса Iterator.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CDbDataReader