(No version information available, might only be in SVN)
ingres_unbuffered_query — Envoie une requête sans buffer à Ingres
$link
, string $query
[, array $params
[, string $types
]] )
ingres_unbuffered_query() envoie la requête SQL
query
au serveur Ingres.
La requête fait alors partie de la transaction courante. S'il n'y a pas de transaction ouverte, ingres_query() en ouvre une nouvelle. Pour fermer la transaction, vous pouvez appeler soit ingres_commit() pour valider les modifications, ou bien ingres_rollback() pour les annuler. Lorsque le script s'achève, toutes les transactions qui n'auront pas été validées, seront annulées, en appelant ingres_rollback(). Vous pouvez aussi utiliser ingres_autocommit() avant d'ouvrir une nouvelle transaction pour forcer la validation immédiate de toutes les requêtes. Ingres permet une seule requête sans buffer active à un moment donné. L'extension va fermer toute requête active avant d'exécuter une nouvelle requête SQL. De plus, vous ne pouvez pas utiliser ingres_result_seek() pour vous positionner à la ligne que vous souhaitez dans le résultat.
Note: Configurations associées
Voyez aussi les directives ingres.describe et ingres.utf8 dans les directives d'exécution.
link
La ressource de connexion à Ingres
query
Une requête SQL valide (voyez le SQL reference guide) pour le serveur Ingres. Voyez la documentation du paramètre query la fonction ingres-query() pour une liste de requêtes SQL qui ne peuvent pas être exécutées via la fonction ingres_unbuffered_query().
Les données contenues dans la requête doivent être proprement échappées.
params
Un tableau de valeurs de paramètre à utiliser avec la requête
types
Une chaîne contenant une séquence de types pour les paramètres fournis à la requête. Voyez la documentation de la fonction ingres-query() pour obtenir la liste des types.
ingres_unbuffered_query() retourne une ressource
de résultats lorsqu'il y a des lignes à lire, et sinon, elle retourne
FALSE
s'il n'y a pas de lignes à lire, comme pour les requêtes
INSERT, UPDATE et DELETE. Pour savoir s'il y a eu une erreur, utilisez
l'une des fonctions ingres_errno(),
ingres_error() ou
ingres_errsqlstate().
Exemple #1 Exécution d'une requête SQL sans buffer sur Ingres
<?php
$link = ingres_connect("demodb");
$result = ingres_unbuffered_query($link, "select * from user_profile");
while ($row = ingres_fetch_row($result)) {
echo $row[1];
echo $row[2];
}
?>
Exemple #2 Passage de paramètres de requêtes à ingres_unbuffered_query()
<?php
$link = ingres_connect("demodb");
$params[] = "Emma";
$query = "select * from user_profile where up_first = ?";
$result = ingres_unbuffered_query($link, $query, $params);
while ($row = ingres_fetch_row($result)) {
echo $row[1];
echo $row[2];
}
?>
Exemple #3 Insertion d'un BLOB dans les paramètres de requêtes SQL Ingres
<?php
$link = ingres_connect("demodb");
//Ouverture d'une photo
$fh = fopen("photo.jpg","r");
$blob_data = stream_get_contents($fh);
fclose($fh);
//Préparation des parametres
$params[] = $blob_data;
$params[] = 1201;
//Définition des types de paramètres
$param_types = "Bi";
$query = "update user_profile set up_image = ? where up_id = ?";
$result = ingres_unbuffered_query($link, $query , $params, $param_types);
if (ingres_errno())
{
echo ingres_errno() . " : " . ingres_error() . "\n";
}
?>