(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_select — Wählt Datensätze aus
$connection
,$table_name
,$conditions
= [],$flags
= PGSQL_DML_EXEC
,$mode
= PGSQL_ASSOC
pg_select() wählt die Datensätze aus der Tabelle
table_name
aus, die den Elementen
(field=>value
) in conditions
entsprechen. Wenn die Abfrage erfolgreich war, wird ein assoziatives Array
mit allen Datensätzen und Werten aus table_name
zurückgegeben, die mit den Datensätzen und Werten in
conditions
identisch sind.
Falls flags
gesetzt ist, wird
pg_convert() mit den angegebenen Flags auf
conditions
angewendet.
Wenn mode
gesetzt ist, ist der Rückgabewert bei
PGSQL_NUM
ein Array, bei
PGSQL_ASSOC
(Standard) ein assoziatives Array und bei
PGSQL_BOTH
beides.
Standardmäßig übergibt pg_select() Rohwerte. Die Werte müssen entweder maskiert werden oder es muss die Option PGSQL_DML_ESCAPE angegeben werden. PGSQL_DML_ESCAPE maskiert Parameter und Bezeichner und setzt sie in Anführungszeichen. Daher muss bei Tabellen- und Spaltennamen zwischen Groß- und Kleinschreibung unterschieden werden.
Es ist zu beachten, dass weder die Maskierung noch eine vorbereitete Abfrage LIKE-Abfragen, JSON, Array, Regex usw. schützen können. Diese Parameter sollten im Kontext behandelt werden, d. h. Werte maskieren und validieren.
connection
Eine PgSql\Connection-Instanz.
table_name
Der Name der Tabelle, aus der die Datensätze ausgewählt werden.
conditions
Ein Array, dessen Schlüssel Feldnamen von
table_name
sind und dessen Werte mit den
entsprechenden Werten in table_name
übereinstimmen müssen, damit der Datensatz zurückgegeben werden kann.
Seit PHP 8.4.0 gelten keine Bedingungen mehr, wenn ein leeres Array
angegeben wird.
Zuvor schlug die Funktion fehl, wenn das Argument für
conditions
leer war.
flags
Eine beliebige Kombination aus
PGSQL_CONV_FORCE_NULL
,
PGSQL_DML_NO_CONV
,
PGSQL_DML_ESCAPE
,
PGSQL_DML_EXEC
,
PGSQL_DML_ASYNC
und
PGSQL_DML_STRING
. Falls
PGSQL_DML_STRING
in den
options
enthalten ist, wird der Abfragestring
zurückgegeben. Werden PGSQL_DML_NO_CONV
oder
PGSQL_DML_ESCAPE
angegeben, wird
pg_convert() intern nicht aufgerufen.
mode
Eine beliebige Kombination aus PGSQL_ASSOC
,
PGSQL_NUM
und PGSQL_BOTH
.
Wenn PGSQL_ASSOC
gesetzt ist, ist der Rückgabewert
ein assoziatives Array, bei PGSQL_NUM
ist es ein Array, und bei PGSQL_BOTH
ist es ein sowohl assoziativ als auch numerisch indiziertes
Array.
Gibt einen String zurück, falls
PGSQL_DML_STRING
im Parameter
flags
übergeben wurde, andernfalls wird bei Erfolg
ein Array zurückgegeben. Bei einem Fehler wird false
zurückgegeben.
Version | Beschreibung |
---|---|
8.4.0 |
conditions ist nun optional.
|
8.1.0 |
Der Parameter connection erwartet nun eine PgSql\Connection-Instanz;
vorher wurde eine Ressource erwartet.
|
7.1.0 |
Der Parameter mode wurde hinzugefügt.
|
Beispiel #1 pg_select()-Beispiel
<?php
$db = pg_connect('dbname=foo');
// Das ist einigermaßen sicher, da alle Werte maskiert werden.
// Allerdings unterstützt PostgreSQL JSON/Array. Diese sind nicht
// sicher, da sie Abfragen weder maskieren noch vorbereiten.
$rec = pg_select($db, 'post_log', $_POST, PG_DML_ESCAPE);
if ($rec) {
echo "Datensätze ausgewählt\n";
var_dump($rec);
} else {
echo "Falsche Eingabe\n";
}
?>