(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)
ingres_query — Sendet eine SQL-Abfrage an den Ingres-Server
ingres_query() sendet die angegebene
query
an den Ingres-Server.
Die Abfrage wird zu einem Teil der aktuell offenen Transaktion. Falls keine Transaktion geöffnet ist, öffnet ingres_query() eine neue Transaktion. Um diese Transaktion zu schließen, kann man ingres_commit() aufrufen, um die gemachten Änderungen in die Datenbank zu schreiben. Mit ingres_rollback() kann man diese Änderungen aber auch wieder zrücksetzen. Wenn das Skript beendet wird, wird jede offene Transaktion zurückgesetzt (indem die Funktion ingres_rollback() aufgerufen wird). Sie können auch die Funktion ingres_autocommit() benutzen, bevor Sie eine neue Transaktion öffnen, damit wird jede einzelne SQL-Abfrage sofort comittet.
Hinweis: Verwandte Konfigurationen
Schauen Sie sich ingres.describe, ingres.scrollable und ingres.utf8 an sowie die Direktiven zur Laufzeit Konfiguration.
link
Die Verbindungskennung
query
Eine gültige SQL-Abfrage (mehr im Ingres SQL reference guide) der Ingres-Dokumentation.
Folgende Arten von SQL-Abfragen können mit dieser Funktion nicht gesendet werden:
params
Ein Array mit Parameterwerten, die in der Abfrage verwendet werden
types
Ein String, der eine Folge von Datentypen für die übergebenen Parameterwerte enthält. Wenn die Option ingres.describe aktiviert ist, kann dieser Parameter ignoriert werden, da die erwarteten Datentypen automatisch vom Server geholt werden.
Typ-Code | Ingres-Datentyp |
---|---|
b | BYTE |
B | LONG BYTE/BLOB |
c | CHAR |
d | DATE/ANSIDATE/TIMESTAMP/TIME |
f | FLOAT |
i | INTEGER |
L | LONG TEXT |
m | MONEY |
M | LONG NVARCHAR |
n | NCHAR |
N | NVARCHAR |
t | TEXT |
v | VARCHAR |
V | LONG VARCHAR |
ingres_query() gibt eine Ergebniskennung für die Abfrage
zurück, sofern Zeilen geholt 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 SELECT-Kommando senden
<?php
$link = ingres_connect("demodb");
$result = ingres_query($link, "select * from user_profile");
while ($row = ingres_fetch_row($result)) {
echo $row[1];
echo $row[2];
}
?>
Beispiel #2 Abfrage-Parameter an ingres_query() übergeben
<?php
$link = ingres_connect("demodb");
$params[] = "Emma";
$query = "select * from user_profile where up_first = ?";
$result = ingres_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_query($link, $query , $params, $param_types);
if (ingres_errno())
{
echo ingres_errno() . "-" . ingres_error() . "\n";
}
ingres_commit($link);
ingres_close($link);
?>