It looks like cloning PDOStatement object does not make any sense because while clone($sth) will not generate any errors, the returned object is not a new object but a reference to original PDOStatement object $sth.
PDOStatement sınıfı
(Bir sürüm bilgisi bulunamadı; sadece SVN'de olabilir.)
Giriş
Bir hazır deyimi ve hazır deyim çalıştırıldıktan sonra sonuç kümesini temsil eder.
Sınıf Sözdizimi
PDOStatement
implements
Traversable
{
bool bindColumn
( mixed
$sütun
, mixed &$değişken
[, int $veri_türü
[, int $uzunluk
[, mixed $seçenekler
]]] )
bool bindParam
( mixed
$değiştirge
, mixed &$değişken
[, int $veri_türü
[, int $uzunluk
[, mixed $seçenekler
]]] )
mixed fetch
([ int
$alım_tarzı = PDO::FETCH_BOTH
[, int $göst_yönü = PDO::FETCH_ORI_NEXT
[, int $göst_başlangıcı = 0
]]] )
array fetchAll
([ int
}$alım_tarzı = PDO::FETCH_BOTH
[, int $sütunnum
[, array $değiştirgeler = array()
]]] )İçindekiler
- PDOStatement->bindColumn — Bir sütunu bir PHP değişkeni ile ilişkilendirir
- PDOStatement->bindParam — Bir değiştirgeyi belirtilen değişkenle ilişkilendirir
- PDOStatement->bindValue — Bir değeri bir değiştirge ile ilişkilendirir
- PDOStatement->closeCursor — Göstericiyi kapatarak deyimin tekrar çalıştırılabilmesini sağlar
- PDOStatement->columnCount — Sonuç kümesindeki sütun sayısını döndürür
- PDOStatement->debugDumpParams — Bir SQL hazır komutunu dökümler
- PDOStatement->errorCode — Deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürür
- PDOStatement->errorInfo — Deyim üzerindeki son işlemle ilgili hata bilgisini döndürür
- PDOStatement->execute — Bir hazır deyimi çalıştırır
- PDOStatement->fetch — Sonuç kümesindeki sonraki satırı döndürür
- PDOStatement->fetchAll — Sonuç kümesinin tüm satırlarını içeren bir dizi döndürür
- PDOStatement->fetchColumn — Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür
- PDOStatement->fetchObject — Sonraki satırı bir nesne olarak döndürür
- PDOStatement->getAttribute — Bir deyim özniteliğinin değerini döndürür
- PDOStatement->getColumnMeta — Sonuç kümesindeki bir sütunla ilgili temel veriyi döndürür
- PDOStatement->nextRowset — Çok satır kümeli bir sonuçtaki sonraki satır kümesini geçerli satır kümesi yapar
- PDOStatement->rowCount — Son SQL deyiminden etkilenen satır sayısını döndürür
- PDOStatement->setAttribute — Bir deyim özniteliğini tanımlar
- PDOStatement->setFetchMode — Deyim için öntanımlı veri alım kipini belirler
Dmitri Snytkine
25-Jul-2011 06:17
rosko at zeta dot org dot au
02-Dec-2009 05:50
There are many references around for returning a refcursor from a pgSQL function using pg_query. All essentially boil down to executing the following single statement (or some variation of it):
begin; select yourFunction(params...); fetch all in cursorname; commit;
In PDO, this doesn't work because PDO won't allow multiple statements submitted as a single statement (due to SQL injection detection). Instead, try this or similar:
<?php
$sql = 'select yourFunction(params...)';
$db = new PDO('pgsql:dbname=yourDBname');
$db->beginTransaction();
$cmd = $db->prepare($sql);
if ($cmd->execute()) {
if ($query = $db->query('fetch all in cursorname')) {
...processing...
$query->closeCursor();
$cmd->closeCursor();
}
}
$db->commit();
?>
