()
ingres_unbuffered_query — Sendet eine SQL-Abfrage an Ingres, ohne die Ergebniszeilen zu puffern
ingres_unbuffered_query() sendet die angegebene query an den Ingres-Server.
Die Abfrage wird Teil der aktuell geöffneten Transaktion. Falls es aktuell keine offene Transaktion gibt, wird mit ingres_unbuffered_query() eine geöffnet. Geschlossen wird sie entweder mit ingres_commit(), wobei die gemachten Änderungen in die Datenbank geschrieben werden, oder mit ingres_rollback(), wobei die Änderungen verworfen werden. Wenn das Skript zuende ist, wird jede geöffnete Transaktion zurückgesetzt (indem die ingres_rollback() aufgerufen wird). Sie können vor dem Öffnen einer neuen Transaktion ingres_autocommit() ausführen, danach werden alle Änderungen sofort nach der Ausführung einer SQL-Abfrage committet. Ingres erlaubt zum selben Zeitpunkt nur eine einzige aktive ungepufferte Abfrage. Jede andere aktive ungepufferte Abfrage wird geschlossen, bevor noch eine SQL-Abfrage gesendet werden kann. Außerdem kann der Datensatzzeiger vor dem Auslesen nicht mit ingres_result_seek() positioniert werden.
Hinweis: Verwandte Konfigurationen
Siehe auch die Direktiven ingres.describe und ingres.utf8 der Laufzeit-Konfiguration.
Die Verbindungskennung
Eine gültige SQL-Abfrage (siehe im SQL reference guide der Ingres-Dokumentation). Bei der Funktion ingres_query() finden Sie bei dem Parameter query eine Liste der SQL-Kommandos, die nicht mit ingres_unbuffered_query() ausgeführt werden können.
Ein Array mit den Parameterwerten für die Abfrage
Ein String, der eine Folge von Datentypen für die übergebenen Parameterwerte enthält. Eine Liste der Typ-Codes finden Sie bei der Funktion ingres_query(). Bei der Funktion ingres_query() finden Sie bei dem Parameter types eine Liste der Typ-Codes.
ingres_unbuffered_query() gibt eine Ergebniskennung zurück, sofern Zeilen gelesen werden können, anderenfalls wird FALSE zurückgegeben. Das ist beispielsweise bei einem INSERT-, UPDATE- oder DELETE-Kommando der Fall. Um festzustellen, ob es einen Fehler gab, benutzt man die Funktionen ingres_errno(), ingres_error() oder ingres_errsqlstate().
Beispiel #1 Ein einfaches ungepuffertes SELECT-Kommando senden
<?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];
}
?>
Beispiel #2 Abfrageparameter an ingres_unbuffered_query() übergeben
<?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];
}
?>
Beispiel #3 Ein BLOB mit Parameter-Typen einfügen
<?php
$link = ingres_connect("demodb");
// Eine Bilddatei öffnen
$fh = fopen("photo.jpg","r");
$blob_data = stream_get_contents($fh);
fclose($fh);
// Parameter vorbereiten
$params[] = $blob_data;
$params[] = 1201;
// Parameter-Typen definieren
$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";
}
?>