Valid options are PGSQL_DML_NO_CONV, PGSQL_DML_EXEC, PGSQL_DMP_ASYNC, PGSQL_DML_STRING (pulled out of source code).
This function does not support selecting from multiple tables. You can get around this by setting the PGSQL_DML_NO_CONV option. This prevents the error which occurs when the function tries to convert the condition array.
I think it is also important to point out that the table_name field is not safe, particularily with the PGSQL_DML_NO_CONV option.
The arguements array field is compulsory, as documented. What isn't so clear is that the array has to actually have some values in it, you can't do a select all.
In summary, this function is good for a very small subset of basic queries. If you are after anything more complex you are better off with pg_query.pg_select
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
pg_select
Референца за `function.pg-select.php` со подобрена типографија и навигација.
pg_select
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_select — Избери записи
= NULL
PgSql\Connection
$connection,string
$table_name,array
$conditions = [],int
$flags = PGSQL_DML_EXEC,int
$mode = PGSQL_ASSOC): array|string|false
pg_select() избира записи наведени од
conditions што има
field=>value. За успешен упит, враќа низа што ги содржи сите записи и полиња што одговараат на условите наведени од conditions.
Враќа flags е поставено,
pg_convert() се применува на
conditions со специфицираните знаменца.
Враќа mode е поставено, вратената вредност ќе биде во форма на низа со PGSQL_NUM, асоцијативна низа со PGSQL_ASSOC (стандардно) или и двете со PGSQL_BOTH.
Стандардно pg_select() проследува сурови вредности. Вредностите мора да бидат избегнати или мора да биде специфицирана опцијата PGSQL_DML_ESCAPE. PGSQL_DML_ESCAPE ги цитира и избегнува параметрите/идентификаторите. Затоа, имињата на табелите/колоните станаа чувствителни на големи и мали букви.
Имајте предвид дека ниту избегнувањето ниту подготвеното барање не можат да заштитат LIKE барање, JSON, Низа, Regex, итн. Овие параметри треба да се третираат според нивните контексти. т.е. Избегнувајте/потврдете вредности.
Параметри
connection-
Еден PgSql\Connection instance.
table_name-
Име на табелата од која да се изберат редови.
conditions-
Еден array чии клучеви се имиња на полиња во табелата
table_name, и чии вредности се условите што еден ред мора да ги исполни за да биде преземен. Од PHP 8.4.0, кога е обезбедена празна низа, нема да се применат услови. Претходно, функцијата не успеа со празнаconditionsargument. flags-
Податоци за конвертирање.
PGSQL_CONV_FORCE_NULL,PGSQL_DML_NO_CONV,PGSQL_DML_ESCAPE,PGSQL_DML_EXEC,PGSQL_DML_ASYNCorPGSQL_DML_STRINGкомбинирано. АкоPGSQL_DML_STRINGе дел одflagsтогаш се враќа низата на упитот. КогаPGSQL_DML_NO_CONVorPGSQL_DML_ESCAPEе поставено, не го повикува pg_convert() internally. mode-
Податоци за конвертирање.
PGSQL_ASSOC,PGSQL_NUMorPGSQL_BOTHВраќаPGSQL_ASSOCе поставено вратената вредност ќе биде асоцијативна array, соPGSQL_NUMвратената вредност ќе биде array, и соPGSQL_BOTHвратената вредност ќе биде и асоцијативна и нумерички индексирана array.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. string if PGSQL_DML_STRING се пропушта преку flags, инаку враќа array при успех, или false при неуспех.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.4.0 |
conditions сега е опционално.
|
| 8.1.0 |
На connection параметарот очекува PgSql\Connection
инстанца сега; претходно, а resource се очекуваше.
|
| 7.1.0 |
На mode параметар беше додаден.
|
Примери
Пример #1 pg_select() example
<?php
$db = pg_connect('dbname=foo');
// This is safe somewhat, since all values are escaped.
// However PostgreSQL supports JSON/Array. These are not
// safe by neither escape nor prepared query.
$rec = pg_select($db, 'post_log', $_POST, PG_DML_ESCAPE);
if ($rec) {
echo "Records selected\n";
var_dump($rec);
} else {
echo "User must have sent wrong inputs\n";
}
?>Види Исто така
- pg_convert() - Конвертирање на вредностите на асоцијативниот список во форми погодни за SQL изјави
Белешки од корисници 2 забелешки
David mentioned that you can't do a Select all.
However, when executing this script:
<?php
$conn_string = "dbname=mydb";
$db = pg_connect($conn_string);
$selectfields = array("imgid" => "");
$records = pg_select($db,"mmsfiles",$selectfields);
print_r($records);
?>
...I get this result:
Array
(
[0] => Array
(
[imgid] => 1
[file] => /home/wietse/public_html/mms/images/1.gif
[thumb] =>
)
[1] => Array
(
[imgid] => 2
[file] => /home/wietse/public_html/mms/images/2.gif
[thumb] =>
)
[2] => Array
(
[imgid] => 3
[file] => /home/wietse/public_html/mms/images/3.gif
[thumb] =>
)
[3] => Array
(
[imgid] => 4
[file] => /home/wietse/public_html/mms/images/4.gif
[thumb] =>
)
)