PHP8 PDOStatement::closeCursor

2024-03-24 00:07 更新

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)

PDOStatement::closeCursor — 關(guān)閉游標(biāo),使語(yǔ)句能再次被執(zhí)行

說(shuō)明

public PDOStatement::closeCursor(): bool

PDOStatement::closeCursor() 釋放到數(shù)據(jù)庫(kù)服務(wù)的連接,以便發(fā)出其他 SQL 語(yǔ)句,但使語(yǔ)句處于一個(gè)可以被再次執(zhí)行的狀態(tài)。

當(dāng)上一個(gè)執(zhí)行的 PDOStatement 對(duì)象仍有未取行時(shí),此方法對(duì)那些不支持再執(zhí)行一個(gè) PDOStatement 對(duì)象的數(shù)據(jù)庫(kù)驅(qū)動(dòng)非常有用。 如果數(shù)據(jù)庫(kù)驅(qū)動(dòng)受此限制,則可能出現(xiàn)失序錯(cuò)誤的問(wèn)題。

PDOStatement::closeCursor() 要么是一個(gè)可選驅(qū)動(dòng)的特有方法(效率最高)來(lái)實(shí)現(xiàn),要么是在沒(méi)有驅(qū)動(dòng)特定的功能時(shí)作為一般的PDO 備用來(lái)實(shí)現(xiàn)。一般的備用語(yǔ)義上與下面的 PHP 代碼相同:

<?php
do {
    while ($stmt->fetch())
        ;
    if (!$stmt->nextRowset())
        break;
} while (true);
?>

參數(shù) 

此函數(shù)沒(méi)有參數(shù)。

返回值 

成功時(shí)返回 true, 或者在失敗時(shí)返回 false。

錯(cuò)誤/異常 

如果屬性 PDO::ATTR_ERRMODE 設(shè)置為 PDO::ERRMODE_WARNING,則發(fā)出級(jí)別為 E_WARNING 的錯(cuò)誤。

如果屬性 PDO::ATTR_ERRMODE 設(shè)置為 PDO::ERRMODE_EXCEPTION,則拋出 PDOException。

示例 

示例 #1 PDOStatement::closeCursor() 示例

在下面示例中,$stmt PDOStatement 對(duì)象返回多行,但應(yīng)用程序只取第一行,讓 PDOStatement 對(duì)象處于一個(gè)有未取行的狀態(tài)。為確保應(yīng)用程序?qū)λ袛?shù)據(jù)庫(kù)驅(qū)動(dòng)都能正常運(yùn)行,在執(zhí)行 $otherStmt PDOStatement 對(duì)象前,在 $stmt 調(diào)用 PDOStatement::closeCursor()。

<?php
/* 創(chuàng)建一個(gè) PDOStatement 對(duì)象 */
$stmt = $dbh->prepare('SELECT foo FROM bar');

/* 創(chuàng)建第二個(gè) PDOStatement 對(duì)象 */
$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');

/* 執(zhí)行第一條語(yǔ)句 */
$stmt->execute();

/*  從結(jié)果集中只取出第一行 */
$stmt->fetch();

/* The following call to closeCursor() may be required by some drivers */
$stmt->closeCursor();

/*  現(xiàn)在可以執(zhí)行第二條語(yǔ)句了 */
$otherStmt->execute();
?>

參見(jiàn) 

  • PDOStatement::execute() - 執(zhí)行預(yù)處理語(yǔ)句


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)