Урок - Дополнительные методы класса PDOStatement

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

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

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

Метод PDOStatement::closeCursor()

Метод PDOStatement::closeCursor() - закрывает курсор, откючает запрос для очердного выполнения.

 echo "Вариант 1:<br>\n";
$pdoStatement = $pdo->prepare('SELECT * FROM `articles`');
$pdoStatement->execute();
print_r( $pdoStatement->fetch());
$pdoStatement->closeCursor();
while($row = $pdoStatement->fetch()){
print_r($row);
}

echo "Вариант 2:<br>\n";
$pdoStatement = $pdo->prepare('SELECT * FROM `articles`');
$pdoStatement->execute();
print_r( $pdoStatement->fetch());
while($row = $pdoStatement->fetch()){
print_r($row);
}

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

Во втором варианте отсутствие PDOStatement::closeCursor() приводит к выводу всех полученных данных в цикле while(...)

Метод PDOStatement::columnCount()

Метод PDOStatement::columnCount() возвращает количество колонок в результате выполнения запроса.

 $pdoStatement = $pdo->prepare('SELECT * FROM `articles`');

$colcount = $pdoStatement->columnCount();
print("До выполнения запроса: $colcount<br>\n");

$pdoStatement->execute();

$colcount = $pdoStatement->columnCount();
print("После выполнения запроса: $colcount<br>\n");

В примере видно, что вызывать метод PDOStatement::columnCount() имеет смысл только после выполнения SQL запроса.

Метод PDOStatement::debugDumpParams()

Метод PDOStatement::debugDumpParams() выводит в поток вывода информацию о выполненном запросе.

 $sql = 'SELECT * FROM `articles` WHERE `id` = :id';
$pdoStatement = $db->prepare($sql);
$id = 1;
$pdoStatement->bindParam(':id', $id, PDO::PARAM_INT);
$pdoStatement->execute();
$pdoStatement->debugDumpParams();

$sql = 'SELECT * FROM `articles` WHERE :id1 $pdoStatement = $pdo->query($sql);
$result = $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
print_r( $pdoStatement->fetchAll());