Урок - Методы класса PDOStatement

Главная » Курсы » Курс PHP5, PDO - PHP Data Objects » Урок - Методы класса PDOStatement

Обучающий онлайн курс
PHP5, PDO - PHP Data Objects

Лицензия: Копирование запрещено.

Методы класса PDOStatement

  • PDOStatement::bindColumn() - привязка столбца к переменной PHP
  • PDOStatement::bindParam() - привязка параметра к указанному имени переменной
  • PDOStatement::bindValue() - привязка значения к параметру
  • PDOStatement::closeCursor() - закрывает курсор, откючает запрос для очердного выполнения.
  • PDOStatement::columnCount() - возвращает количество столбцов в результирующем наборе
  • PDOStatement::debugDumpParams() - дамп SQL запроса
  • PDOStatement::errorCode() - вернет статус об выполнении последнего запроса к базе данных
  • PDOStatement::errorInfo() - получить дополнительную информацию об ошибке, связанную с последней операцией на базе данных
  • PDOStatement::execute() - выполняет подготовленный запрос
  • PDOStatement::fetch()- вернет очередную строку из результирующего набора
  • PDOStatement::fetchAll() - вернет массив содержащий все строки из выборки
  • PDOStatement::fetchColumn() - вернет один столбец из очередной строки из результирующего набора
  • PDOStatement::fetchObject() - вернет очередную строку в виде объекта
  • PDOStatement::getAttribute() - вернет значение параметра
  • PDOStatement::getColumnMeta() - возвращает метаданные для столбца в результирующем наборе
  • PDOStatement::nextRowset() - переход к очередной строке через несколько строк
  • PDOStatement::rowCount() - вернет количество строк обработанных с помощью SQL запроса
  • PDOStatement::setAttribute() - изменить параметр
  • PDOStatement::setFetchMode() - установить по умолчанию режим извлечения, для этого запроса

Интерфейс Iterator в PDOStatement

Одной из важных особенностей класса PDOStatement является включение интерфейса Iterator - это значит что экземпляр класса PDOStatement можно использовать в операторе цикла foreach(...):

$pdoStatement = $pdo->query('SELECT * FROM `articles`;');
print_r($pdoStatement);
foreach($pdoStatement as $row) {
print_r($row);
}

Метод PDOStatement::fetch()

У метода PDOStatement::fetch() есть не обязательный аргумент, может принимать следующие значения:

  • FETCH_NUM- возвращать строки (кортежи) только с числовыми ключами.
  • FETCH_ASSOC- возвращать строки (кортежи) только с ассоциативными ключами.
  • FETCH_BOTH- возвращать строки (кортежи) с числовыми и ассоциативными ключами, по умолчанию.
  • FETCH_OBJ- возвращать строки (кортежи) в виде объекта.
  • FETCH_LAZY - возвращать строки (кортежи) в виде объекта, подгружать данные только в момент обращения к ним.

Ниже приведен пример охватывающий все варианты параметра

 echo "Без аргумента\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
while ($row = $pdoStatement->fetch()) {
print_r($row);
}

echo "PDO::FETCH_BOTH\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
while ($row = $pdoStatement->fetch(PDO::FETCH_BOTH)) {
print_r($row);
}

echo "PDO::FETCH_ASSOC\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
while ($row = $pdoStatement->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}

echo "PDO::FETCH_NUM\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
while ($row = $pdoStatement->fetch(PDO::FETCH_NUM)) {
print_r($row);
}

echo "PDO::FETCH_OBJ\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
while ($row = $pdoStatement->fetch(PDO::FETCH_OBJ)) {
print_r($row);
}

echo "PDO::FETCH_LAZY\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
while ($row = $pdoStatement->fetch(PDO::FETCH_LAZY)) {
print_r($row);
}

Метод PDOStatement::fetchColumn()

Метод PDOStatement::fetchColumn() позволяет получить данные конкретного столбца. Метод Метод PDOStatement::fetchColumn() принимает один не обязательный парамет, который указывает номер столбца для извлечения.

 echo "\nДанные целиком:\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 2;');
while ($row = $pdoStatement->fetchColumn()) {
print_r($row);
echo "\n";
}

echo "\nТолько первое поле(колонка) выборки:\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 2;');
while ($row = $pdoStatement->fetchColumn()) {
print_r($row);
echo "\n";
}

echo "\nТолько второе поле(колонка) выборки:\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 2;');
while ($row = $pdoStatement->fetchColumn(1)) {
print_r($row);
echo "\n";
}

echo "\nТолько третье поле(колонка) выборки:\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 2;');
while ($row = $pdoStatement->fetchColumn(2)) {
print_r($row);
echo "\n";
}

echo "\nТолько 4-е поле(колонка) выборки:\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 2;');
while ($row = $pdoStatement->fetchColumn(3)) {
print_r($row);
echo "\n";
}

Метод PDOStatement::fetchAll()

У метода PDOStatement::fetchAll() есть не обязательный аргумент, может принимать следующие значения:

  • PDO::FETCH_NUM- возвращать строки (кортежи) только с числовыми ключами.
  • PDO::FETCH_ASSOC- возвращать строки (кортежи) только с ассоциативными ключами.
  • PDO::FETCH_BOTH- возвращать строки (кортежи) с числовыми и ассоциативными ключами, по умолчанию.
  • PDO::FETCH_OBJ- возвращать строки (кортежи) в виде объекта.
  • PDO::FETCH_FUNC - используется для указания callback-функции для обработки строк.

FETCH_LAZY- не используется.

 echo "Без аргумента\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
$rows = $pdoStatement->fetchAll());
print_r($rows);

echo "PDO::FETCH_BOTH\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
$rows = $pdoStatement->fetchAll(PDO::FETCH_BOTH);
print_r($rows);

echo "PDO::FETCH_ASSOC\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
$rows = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
print_r($rows);

echo "PDO::FETCH_NUM\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
$rows = $pdoStatement->fetchAll(PDO::FETCH_NUM);
print_r($rows);

echo "PDO::FETCH_OBJ\n";
$pdoStatement = $pdo->query('SELECT * FROM `articles` LIMIT 1;');
$rows = $pdoStatement->fetchAll(PDO::FETCH_OBJ);
print_r($rows);

Пример использования PDO::FETCH_FUNC - обаботка данных callback-функцией.

 function myFunction() {
echo __FUNCTION__."-begin \n";
print_r($args = func_get_args());
echo __FUNCTION__."-end \n";
return '['.$args[1].']';
}
$pdoStatement = $pdo->query('SELECT * FROM `articles`');
print_r( $pdoStatement->fetchAll(PDO::FETCH_FUNC, "myFunction"));

Обратите внимание, что callback-функция должна возвращать новое значение.