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.
La classe PDOStatement
(No version information available, might only be in SVN)
Introduction
Représente une requête préparée et, une fois exécutée, le jeu de résultats associé.
Synopsis de la classe
PDOStatement
implements
Traversable
{
/* Propriétés */
/* Méthodes */
bool bindColumn
( mixed
$column
, mixed &$param
[, int $type
[, int $maxlen
[, mixed $driverdata
]]] )
bool bindParam
( mixed
$parameter
, mixed &$variable
[, int $data_type = PDO::PARAM_STR
[, int $length
[, mixed $driver_options
]]] )
mixed fetch
([ int
}$fetch_style
[, int $cursor_orientation = PDO::FETCH_ORI_NEXT
[, int $cursor_offset = 0
]]] )Propriétés
- queryString
-
chaîne de caractères utilisée pour la requête.
Sommaire
- PDOStatement::bindColumn — Lie une colonne à une variable PHP
- PDOStatement::bindParam — Lie un paramètre à un nom de variable spécifique
- PDOStatement::bindValue — Associe une valeur à un paramètre
- PDOStatement::closeCursor — Ferme le curseur, permettant à la requête d'être de nouveau exécutée
- PDOStatement::columnCount — Retourne le nombre de colonnes dans le jeu de résultats
- PDOStatement::debugDumpParams — Détaille une commande préparée SQL
- PDOStatement::errorCode — Récupère les informations sur l'erreur associée lors de la dernière opération sur la requête
- PDOStatement::errorInfo — Récupère les informations sur l'erreur associée lors de la dernière opération sur la requête
- PDOStatement::execute — Exécute une requête préparée
- PDOStatement::fetch — Récupère la ligne suivante d'un jeu de résultats PDO
- PDOStatement::fetchAll — Retourne un tableau contenant toutes les lignes du jeu d'enregistrements
- PDOStatement::fetchColumn — Retourne une colonne depuis la ligne suivante d'un jeu de résultats
- PDOStatement::fetchObject — Récupère la prochaine ligne et la retourne en tant qu'objet
- PDOStatement::getAttribute — Récupère un attribut de requête
- PDOStatement::getColumnMeta — Retourne les métadonnées pour une colonne d'un jeu de résultats
- PDOStatement::nextRowset — Avance à la prochaine ligne de résultats d'un gestionnaire de lignes de résultats multiples
- PDOStatement::rowCount — Retourne le nombre de lignes affectées par le dernier appel à la fonction PDOStatement::execute()
- PDOStatement::setAttribute — Définie un attribut de requête
- PDOStatement::setFetchMode — Définit le mode de récupération par défaut pour cette requête
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();
?>
