(No version information available, might only be in Git)
ingres_unbuffered_query — Sendet eine SQL-Abfrage an Ingres, ohne die Ergebniszeilen zu puffern
$link
, string $query
[, array $params
[, string $types
]] )
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.
link
Die Verbindungskennung
query
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.
Daten in der Abfrage sollten ordnungsgemäß maskiert werden.
params
Ein Array mit den Parameterwerten für die Abfrage
types
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";
}
?>